Remova o registro de tipos de postagem personalizados

41

Alguém sabe de uma maneira de cancelar o registro de tipos de postagem personalizados?

Existe um equivalente a register_post_type() ?

    
por anu 09.11.2010 / 14:33
fonte

5 respostas

36

Atualmente, não há uma função para cancelar o registro de um tipo de postagem, mas o processo é bem simples.

Andrew Nacin forneceu alguns códigos no trac, encontrados aqui e postados 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 incorporado terá efeitos desconhecidos no WordPress, portanto, por favor, faça por sua conta e risco. Cancelar o registro de um tipo de postagem personalizado deve ser perfeitamente seguro, mas naturalmente não faria nenhuma limpeza em sua instalação (ou seja, 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 (quando possível) seria simplesmente não registrar o tipo de postagem em primeiro lugar, se não for desejado.

    
por t31os 09.11.2010 / 14:51
fonte
27

A partir do WordPress 4.5, há uma função para fazer isso, unregister_post_type . Exemplo: -

function delete_post_type(){
    unregister_post_type( 'blocks' );
}
add_action('init','delete_post_type');
    
por Dhinju Divakaran 12.07.2016 / 06:57
fonte
7

Isso funcionou para mim, como disse Rarst usando o remove_action () se possível.

add_action( 'after_setup_theme','remove_foundation_options', 100 );

function remove_foundation_options() {   
    remove_action( 'init', 'Orbit');    
}
    
por Vayu 19.01.2012 / 16:09
fonte
5

Como t31os notou, é fácil remover o tipo de postagem da variável global.

Mas se você quer dizer tipo non-core post, então seria melhor procurar código que o registrasse e desengatar com remove_action() (se for um código decente, ele deve ser ligado em vez de ser executado diretamente).

    
por Rarst 09.11.2010 / 14:55
fonte
2

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.

    
por Nipun Tyagi 18.07.2017 / 06:41
fonte