2011-09-30 12 views
5

Ho creato un tipo di post personalizzato denominato portfolio con supporto di tassonomia dei tag.Wordpress - Rimuove il sottomenu dal tipo di post personalizzato

Poiché WP non fa differenza tra tag di post e tag di tipo di post personalizzati, ho creato una voce di menu Taxonomy con cui voglio inserire categorie e post tag. Sono riuscito a creare il menu e i sottomenu e anche a rimuovere categoria e post tag dal menu Post, ma non sono riuscito a rimuovere Post Tags dal menu del tipo di post personalizzato.

ho provato:

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

risposta

6

Questo è un po 'sporca, ma funziona:

add_action('admin_menu', 'remove_niggly_bits'); 
function remove_niggly_bits() { 
    global $submenu; 
    unset($submenu['edit.php?post_type=portfolio'][11]); 
} 

io non so esattamente quale numero chiave si desidera rimuovere. Il modo migliore per scoprire che è quello di fare:

add_action('admin_menu', 'remove_niggly_bits'); 
function remove_niggly_bits() { 
    global $submenu; 
    //unset($submenu['edit.php?post_type=portfolio'][11]); 
    print_r($submenu); exit; 
} 

Tutto si rompe quando si carica l'area di amministrazione fino a quando si rimuove quella linea, ma sarà mostrare la struttura e quale tasto si ha bisogno.

+0

È un po 'sporco. Speravo che funzionasse con remove_submenu_page(), ma poiché è l'unica risposta (funzionante) si ottiene la risposta accettata :-) –

16

È possibile utilizzare remove_submenu_page() - il trucco però è quello di ottenere la lumaca esattamente a destra, per fare questo il modo più semplice è quello di eseguire il dump dei $ sottomenu globale e verificare la menu_slug e submenu_slug.

global $submenu; 
var_dump($submenu); 

Questo darà la matrice di menu, il tasto di livello superiore è il menu_slug e quindi la corretta submenu_slug si trovano nell'elemento 2 delle matrici nidificate.

Quindi, se ho avuto un tipo di messaggio personalizzato denominato "my_events" e volevo rimuovere il menu tag da esso, la mia struttura del menu originale sarebbe simile a questa

... 
'edit.php?post_type=my_events' => 
    array 
     5 => 
     array 
      0 => string 'All Events' (length=10) 
      1 => string 'edit_posts' (length=10) 
      2 => string 'edit.php?post_type=my_events' (length=28) 
     10 => 
     array 
      0 => string 'Add New' (length=7) 
      1 => string 'edit_posts' (length=10) 
      2 => string 'post-new.php?post_type=my_events' (length=32) 
     15 => 
     array 
      0 => string 'Tags' (length=4) 
      1 => string 'manage_categories' (length=17) 
      2 => string 'edit-tags.php?taxonomy=post_tag&post_type=my_events' (length=55) 
... 

Da questo si può vedere che il menu_slug è 'edit.php?post_type=my_events' e il sottomenu slug per il menu dei tag è 'edit-tags.php?taxonomy=post_tag&post_type=my_events'.

Quindi la funzione di chiamata remove sarebbe:

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

Si noti che la lumaca sottomenu è HTML codificata in modo la e commerciale è ora & - questa è probabilmente quella cosa che ha reso difficile per le persone a lavorare fuori da primi principi come dovrebbe essere il nome della lumaca.

+0

+1, funziona. @IllesPeter, questa dovrebbe essere la risposta accettata. – Sparky

+0

+1 confermato funziona. Come riportato altrove, questa funzione è molto sensibile a ottenere entrambi gli argomenti. Vale la pena persistere con modifiche diverse per farlo bene. –

+0

+1 SUPER UTILE! Grazie @ benz001 dovrebbe essere la risposta corretta. – user2655393

0

Potrebbe essere meglio utilizzare semplicemente lo 'show_ui' => false.

function car_brand_init() { 
    // new taxonomy named merk 
    register_taxonomy(
     'merk', 
     'lease_fop', 
     array(
      'label' => __('Merken'), 
      'rewrite' => array('slug' => 'merken'), 
      'update_count_callback' => '_update_post_term_count', 
      // use this to hide from menu 
      'show_ui' => false, 
      'capabilities' => array(
       'assign_terms' => 'edit_guides', 
       'edit_terms' => 'publish_guides' 
      ) 
     ) 
    ); 
} 
add_action('init', 'car_brand_init'); 
+0

Ma questo disabilita anche la meta-box. Se vuoi solo nascondere la tassonomia dal menu, la soluzione @ benz001 è la migliore. –

Problemi correlati