web-dev-qa-db-fra.com

Supprimer le menu administrateur de la taxonomie personnalisée associée au type de publication personnalisé

J'essaie de créer une taxonomie qui est en quelque sorte cachée .. ce qui signifie que j'ai l'intention d'ajuster la metabox afin que vous ne puissiez sélectionner qu'un terme unique parmi 3 options. "en vedette", "normal" ou "exclu". mais je n'arrive pas à comprendre comment supprimer le menu d'administration.

ce qui suit supprime l’élément de menu Étiquettes sous Messages:

add_action('admin_menu','yoursite_admin_menu');
function yoursite_admin_menu() {
    // remove_submenu_page was introduced in 3.1
    remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=post_tag' );
}

mais cela ne supprime pas la taxonomie en vedette de Portfolio

add_action('admin_menu','yoursite_admin_menu');
function yoursite_admin_menu() {
    // remove_submenu_page was introduced in 3.1
    remove_submenu_page( 'edit.php?post_type=portfolio', 'edit-tags.php?taxonomy=featured&post_type=portfolio' );
}

je l'ai essayé de plusieurs façons différentes en ce qui concerne les limaces, mais je ne parviens pas à les faire fonctionner. Qu'est-ce que je rate?

4
helgatheviking

suite au commentaire de Bainternet, j’ai enregistré la taxonomie sans montrer aucun des éléments de l’interface utilisateur

add_action( 'init', 'kia_register_featured_tax', 0 );

function kia_register_featured_tax(){
    if(!taxonomy_exists('portfolio_featured')){
        $labels = array(
            'name' => _x( 'Featured', $this->plugin_domain ),
            'singular_name' => _x( 'Featured', $this->plugin_domain )           
        );

        $args = array(
            'labels' => $labels,
            'rewrite' => array( 'slug' => 'portfolio-featured' ),
            'query_var' => true,
            'public' => true,
            'show_ui' => false,
            'show_tagcloud' => false,
            'show_in_nav_menus' => false,
        );
        register_taxonomy( 'portfolio_featured', array( 'portfolio' ), $args );
    }
}
4
helgatheviking

Vous pouvez utiliser remove_submenu_page(), mais il est difficile d’adapter correctement le slug du sous-menu et il faut qu’il fonctionne parfaitement. Le sousmenu_slug correct n'est pas exactement le même que le lien que vous cliquez dans le menu. Celui du menu est encodé en URL mais le slug lui-même est codé en html, la principale différence étant que le slug, les caractères & seront à la place de &amp.

Dans votre exemple, l'appel de fonction devrait probablement être:

remove_submenu_page( 'edit.php?post_type=portfolio', 'edit-tags.php?taxonomy=featured&post_type=portfolio' );

Pour bien comprendre, var_dump la variable de sous-menu et voir le slug utilisé par le système, voir https://stackoverflow.com/questions/7610702/wordpress-remove-submenu-from-custom-post-type/ pour un exemple travaillé.

13
benz001

Cette peut-être vieux, et peut-être même au moment de la question initiale non disponible mais ..

Si vous regardez dans wp-includes/taxonomy.php, il existe une option show_in_menu pour le hook register_taxonomy () qui n’a pas été inclus dans la documentation de WordPress.

  • show_in_menu - Indique si la taxonomie doit être affichée dans le menu d'administration.
    • Si la valeur est true, la taxonomie est affichée en tant que sous-menu du menu Type d'objet.
    • Si false, aucun menu n'est affiché.
    • show_ui doit être vrai.
    • Si non défini, la valeur par défaut est héritée de show_ui.

Je pensais que je laisserais ça ici à ceux qui cherchent la réponse :)

6
user2686172