Alguém conhece uma maneira de cancelar o registro de tipos de postagem personalizados?
Existe um equivalente a register_post_type()
?
unregister_post_type
. Veja Unregister um tipo de pós usando unregister_post_type
Alguém conhece uma maneira de cancelar o registro de tipos de postagem personalizados?
Existe um equivalente a register_post_type()
?
unregister_post_type
. Veja Unregister um tipo de pós usando unregister_post_type
Respostas:
Atualmente, não há uma função para cancelar o registro de um tipo de postagem, mas o processo é bastante simples.
Andrew Nacin forneceu algum código sobre o trac, encontrado aqui e postado abaixo.
if ( ! function_exists( 'unregister_post_type' ) ) :
function unregister_post_type( $post_type ) {
global $wp_post_types;
if ( isset( $wp_post_types[ $post_type ] ) ) {
unset( $wp_post_types[ $post_type ] );
return true;
}
return false;
}
endif;
O cancelamento do registro de um tipo de postagem interno terá efeitos desconhecidos no WordPress, portanto, faça-o por sua conta e risco. O cancelamento do registro de um tipo de postagem personalizado deve ser perfeitamente seguro, mas naturalmente não limparia sua instalação (por exemplo, cancelar o registro de um tipo de postagem não equivale à remoção de dados do banco de dados).
Posso imaginar alguns cenários em que isso poderia ser necessário, mas a abordagem mais sensata (sempre que possível) seria simplesmente não registrar o tipo de postagem em primeiro lugar, se não for desejado.
register_post_type()
carregamento de cada página ( init
) provavelmente é a estrutura do permalink (atualize-a e ela desaparecerá) e as postagens no banco de dados, que você poderá remover fazendo DELETE FROM wp_posts WHERE post_type = '[your custom post type]'
.
A partir do WordPress 4.5, existe uma função para fazer isso unregister_post_type
,. Exemplo:-
function delete_post_type(){
unregister_post_type( 'blocks' );
}
add_action('init','delete_post_type');
unregister_post_type()
não exclui nada do banco de dados. Apenas impede que o tipo de postagem seja registrado.
Como o t31os observou, é fácil remover o tipo de postagem da variável global.
Mas se você quer dizer um tipo de postagem não essencial, seria melhor procurar o código que o registra e desconectar remove_action()
(se for um código decente, ele deve ser conectado ao invés de ser executado diretamente).
register_post_type()
não é uma função que se presta muito bem a enganchar. A maneira normal de registrar um tipo de postagem é executar a função diretamente em uma função ligada ao init. A remoção dessa ação pode ter efeitos indesejados, pois muitas vezes haverá outras funcionalidades removidas com essa função.
No WordPress versão 4.5 e superior, eles fornecem uma função para remover o tipo de postagem (unregister_post_type). Exemplo
function delete_post_type(){
unregister_post_type( 'jobs' );
}
add_action('init','delete_post_type');
Funcionará definitivamente.