web-dev-qa-db-fra.com

Annuler l'enregistrement des types de publication personnalisés

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()?

44
anu

Actuellement, il n'existe pas de fonction permettant d'annuler l'enregistrement d'un type d'article, 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 désinscription d'un type de message intégré aura des effets inconnus sur WordPress. Veuillez donc 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 (c'est-à-dire que l'annulation d'un type d'article ne correspond 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) serait simplement de ne pas enregistrer le type de message en premier lieu s'il n'est pas souhaité.

37
t31os

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

function delete_post_type(){
    unregister_post_type( 'blocks' );
}
add_action('init','delete_post_type');
36
Dhinju Divakaran

Cela a fonctionné pour moi, comme 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');    
}
6
Vayu

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 doit être accroché plutôt que exécuté directement).

4
Rarst

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.

2
Nipun Tyagi