Anular el registro de tipos de publicaciones personalizadas

41

¿Alguien sabe de una manera de cancelar el registro de tipos de publicaciones personalizadas?

¿Hay un equivalente a register_post_type() ?

    
pregunta anu 09.11.2010 - 14:33

5 respuestas

36

Actualmente no hay una función para cancelar el registro de un tipo de publicación, sin embargo, el proceso es bastante simple.

Andrew Nacin proporcionó algo de código en trac, encontrado aquí y publicado a continuación.

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;

La anulación del registro de un tipo de publicación incorporado tendrá efectos desconocidos en WordPress, por lo que debe hacerlo bajo su propio riesgo. Eliminar el registro de un tipo de publicación personalizado debe ser perfectamente seguro, pero, naturalmente, no se realiza ninguna limpieza en su instalación (es decir, si no se registra un tipo de publicación no equivale a la eliminación de datos de la base de datos).

Puedo imaginar algunos escenarios donde esto podría ser necesario, pero el enfoque más sensato (cuando sea posible) sería simplemente no registrar el tipo de publicación en primer lugar si no se desea.

    
respondido por el t31os 09.11.2010 - 14:51
27

A partir de WordPress 4.5 hay una función para hacer eso, unregister_post_type . Ejemplo: -

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

Esto me funcionó, como dijo Rarst al usar remove_action () si es posible.

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

function remove_foundation_options() {   
    remove_action( 'init', 'Orbit');    
}
    
respondido por el Vayu 19.01.2012 - 16:09
5

Como señaló t31os, es fácil eliminar el tipo de publicación de la variable global.

Pero si te refieres a un tipo de publicación no principal, sería mejor buscar el código que lo registra y desenganchar con remove_action() (si es un código decente, debería estar enganchado en lugar de ejecutarse directamente).

    
respondido por el Rarst 09.11.2010 - 14:55
2

En WordPress versión 4.5 y superiores, proporcionan una función para eliminar el tipo de publicación (unregister_post_type). Example

function delete_post_type(){
unregister_post_type( 'jobs' );
}
add_action('init','delete_post_type');

Funcionará definitivamente.

    
respondido por el Nipun Tyagi 18.07.2017 - 06:41

Lea otras preguntas en las etiquetas