web-dev-qa-db-fra.com

Empêcher l'ajout de la taxe personnalisée au menu d'administration?

J'ai plusieurs types de messages personnalisés, qui partagent deux taxonomies personnalisées (emplacement et service). Les taxonomies personnalisées apparaissent dans chaque menu de type message, et cela semble un peu redondant. Mon client ne va pas avoir besoin d'éditer ces taxonomies, donc je pense que cela va les dérouter de le voir se répéter dans tous les menus.

example post type

Existe-t-il un moyen de le supprimer du menu admin pour tous les types de publication, sauf un, tout en le gardant enregistré pour tous les types de publication? Je sais qu'il existe des plugins pour masquer les éléments de menu de l'administrateur, mais je me demandais si je pouvais simplement ajouter quelque chose lorsque j'ai enregistré la taxonomie personnalisée pour l'empêcher?

Voici un exemple de mon code de taxonomie:

// create custom taxonomy
function my_taxonomies() {

// location
    $labels = array(
        'name'              => _x( 'Location Category', 'taxonomy general name' ),
        'singular_name'     => _x( 'Location Category', 'taxonomy singular name' ),
        'search_items'      => __( 'Search Location Categories' ),
        'all_items'         => __( 'All Location Categories' ),
        'parent_item'       => __( 'Parent Location Category' ),
        'parent_item_colon' => __( 'Parent Location Category:' ),
        'edit_item'         => __( 'Edit Location Category' ), 
        'update_item'       => __( 'Update Location Category' ),
        'add_new_item'      => __( 'Add New Location Category' ),
        'new_item_name'     => __( 'New Location Category' ),
        'menu_name'         => __( 'Location Categories' ),
    );
    $args = array(
        'labels' => $labels,
        'hierarchical' => true,
        'show_ui'           => true,
        'show_admin_column' => true,
    );
    register_taxonomy( 'location', array( 'services','community','facilities','testimonials'), $args );
1
LBF

Vous pouvez utiliser la fonction remove_submenu_page après avoir enregistré la taxonomie.

Voici comment cela fonctionne par défaut, il a 2 paramètres obligatoires, le $menu_slug (ce sont les menus parents, par exemple, les publications, les médias, les pages, les commentaires, etc.), et le $submenu_slug (ce sont les enfants de ces menus). vous supprimez car votre taxonomie personnalisée apparaîtra sous publications ou votre type de publication personnalisée:

<?php remove_submenu_page( $menu_slug, $submenu_slug ); ?>

Si vous n'êtes pas sûr de la nature de votre $menu_slug, vérifiez les exemples remove_menu_page pour voir ce que vous auriez mis dans le premier paramètre. Dans votre cas, puisqu'il s'agit de posts ou de votre type de message personnalisé, ce sera edit.php.

Pour le deuxième paramètre, $submenu_slug, après avoir enregistré la taxonomie, j'ai inspecté l'élément de menu avec l'inspecteur de mon navigateur pour vérifier que le lien de l'élément de menu était edit-tags.php? Taxonomy = location.

Donc, avec votre taxonomie personnalisée 'location', vous écrirez quelque chose comme ceci:

add_action( 'admin_menu', 'remove_custom_tax_wp_menu', 999 );

function remove_custom_tax_wp_menu() {
  $page = remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=location' );
  /* See reference: http://codex.wordpress.org/remove_submenu_page#Examples */
}

Cela ne devrait affecter que la barre latérale du tableau de bord et non la metabox de vos types de publication personnalisés. J'espère que ça aide!

3
RachieVee