Annuler l'enregistrement des types de publication personnalisés

41

Quelqu'un connaît-il un moyen de désenregistrer des types de publication personnalisés?

Existe-t-il un équivalent de register_post_type() ?

    
posée anu 09.11.2010 - 14:33

5 réponses

36

Actuellement, il n’existe pas de fonction permettant de désenregistrer un type de publication. Le processus est toutefois assez simple.

Andrew Nacin a fourni du code sur trac, trouvé ici et affiché ci-dessous.

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 non-inscription d'un type de message intégré aura des effets inconnus sur WordPress. Veuillez le faire à vos risques et périls. L'annulation de l'enregistrement d'un type d'article personnalisé devrait être parfaitement sûre, mais aucun nettoyage ne serait naturellement effectué sur votre installation (par exemple, l'annulation de l'enregistrement d'un type d'article n'équivaut pas à la suppression de données de la base de données).

Je peux imaginer quelques scénarios où cela pourrait être nécessaire, mais l’approche la plus judicieuse (dans la mesure du possible) consisterait simplement à ne pas enregistrer le type de message au départ si ce n’est pas souhaité.

    
réponse donnée t31os 09.11.2010 - 14:51
27

À partir de WordPress 4.5, il existe une fonction permettant de le faire, unregister_post_type . Exemple: -

function delete_post_type(){
    unregister_post_type( 'blocks' );
}
add_action('init','delete_post_type');
    
réponse donnée Dhinju Divakaran 12.07.2016 - 06:57
7

Cela a fonctionné pour moi, comme l'a dit Rarst en utilisant le remove_action () si possible.

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

function remove_foundation_options() {   
    remove_action( 'init', 'Orbit');    
}
    
réponse donnée Vayu 19.01.2012 - 16:09
5

Comme t31os l’a noté, il est facile de supprimer le type de publication de la variable globale.

Mais si vous entendez un type de message non essentiel, il serait préférable de rechercher le code qui l'enregistre et de le décrocher avec remove_action() (s'il s'agit d'un code correct, il devrait être accroché plutôt que exécuté directement).

    
réponse donnée Rarst 09.11.2010 - 14:55
2

Dans WordPress version 4.5 et ultérieure, ils fournissent une fonction permettant de supprimer le type de publication (unregister_post_type). Exemple

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

Cela fonctionnera définitivement.

    
réponse donnée Nipun Tyagi 18.07.2017 - 06:41

Lire d'autres questions sur les étiquettes