Rimuovere una voce di menu creata da un plugin
Sto cercando di rimuovere una voce di menu e ho provato diversi approcci, ma senza successo. È stata creata da un plugin FAQ.
Se uso questa riga:
remove_menu_page( 'edit.php?post_type=question' );
Rimuoverà l'intero menu principale, ma io voglio solo rimuovere due voci di sottomenu contenute all'interno di quell'URL edit.php?post_type=question
.
Per le voci che voglio rimuovere, il percorso nella barra degli indirizzi mostra:
edit-tags.php?taxonomy=faq-topic&post_type=question
e
edit-tags.php?taxonomy=faq-tags&post_type=question
Ho provato diverse soluzioni inclusi remove_menu_page
e remove_submenu_page
senza successo.
Ciò che non ha funzionato finora:
remove_submenu_page( 'edit.php?post_type=question', 'edit-tags.php?taxonomy=faq-topic&post_type=question');
remove_menu_page( 'edit-tags.php?taxonomy=faq-tags') ;
remove_menu_page( 'edit-tags.php?taxonomy=faq-tags&post_type=question') ;
remove_submenu_page( 'edit.php?post_type=question', 'edit-tags.php?taxonomy=faq-topic&post_type=question');
remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=faq-topic&post_type=question');
remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=faq-topic');
remove_submenu_page( 'edit.php', 'edit-tags.php');

function remove_submenu() {
remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=faq-topic&post_type=question' );
remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=faq-tags&post_type=question' );
}
add_action( 'admin_menu', 'remove_submenu', 999 );
Per favore leggi il Codex. remove_submenu_page()
richiede due parametri e l'hook giusto.
Ed è molto importante: Usa una priorità molto, molto, molto alta nel tuo hook! Se usi una priorità bassa, la tua funzione verrà eseguita prima che i menu vengano aggiunti. Quindi non ci sarà alcun menu da rimuovere. Se usi una priorità alta, c'è una buona probabilità che la tua funzione venga eseguita dopo che i menu sono stati aggiunti.
Questa potrebbe essere la parte complicata.
AGGIORNAMENTO
Dopo aver installato e ispezionato il plugin, ho trovato la soluzione. Ci sono diversi problemi e alcune parti complicate.
I sottomenu non sono aggiunti con add_submenu_page()
, sono aggiunti con un custom post type. Una semplice ricerca con add_submenu_page()
, copiare gli slug dei menu e rimuovere i menu deve fallire. Devo cercare lo slug del cpt e usarlo.
Dopo global $submenu; var_dump( $submenu );
ottengo questo output
[altri elementi]
'edit.php?post_type=question' =>
array (size=7)
5 =>
array (size=3)
0 => string 'FAQs' (length=4)
1 => string 'edit_posts' (length=10)
2 => string 'edit.php?post_type=question' (length=27)
10 =>
array (size=3)
0 => string 'Nuova FAQ' (length=8)
1 => string 'edit_posts' (length=10)
2 => string 'post-new.php?post_type=question' (length=31)
15 =>
array (size=3)
0 => string 'Titoli FAQ' (length=9)
1 => string 'manage_categories' (length=17)
2 => string 'edit-tags.php?taxonomy=faq-topic&post_type=question' (length=55)
16 =>
array (size=3)
0 => string 'Tag FAQ' (length=8)
1 => string 'manage_categories' (length=17)
2 => string 'edit-tags.php?taxonomy=faq-tags&post_type=question' (length=54)
[ altri elementi ]
Ora è stato facile rimuovere i sottomenu con edit.php?post_type=question
come slug del menu e edit-tags.php?taxonomy=faq-topic&post_type=question
/ edit-tags.php?taxonomy=faq-tags&post_type=question
come slug del sottomenu.
Se osservi attentamente, la e commerciale (&) è un'entità HTML. Non è possibile semplicemente copiare la parte dell'URL e inserirla. Quindi non puoi rimuovere una pagina di sottomenu con un URL non codificato, deve essere codificato nell'URL.
Ed ecco il codice finale:
add_action( 'admin_menu', 'remove_faq_subpages', 999 );
function remove_faq_subpages() {
$ptype = 'question';
remove_submenu_page( "edit.php?post_type={$ptype}", "edit-tags.php?taxonomy=faq-tags&post_type={$ptype}" );
remove_submenu_page( "edit.php?post_type={$ptype}", "edit-tags.php?taxonomy=faq-topics&post_type={$ptype}" );
}

Sfortunatamente non ha funzionato neanche così. La seguente schermata sarà estremamente utile. Ho provato a farlo in un modo diverso... usando le variabili nella schermata, ma non sono riuscito a farlo funzionare. http://s7.postimg.org/7m36rciob/this_might_help.jpg

Ecco una schermata migliore, scusate se è stata tagliata http://s17.postimg.org/uj18k5vvz/FAQ_help.jpg

Apri il plugin, trova la riga dove vengono aggiunti i menu con add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function );
. Usa $parent_slug
e $menu_slug
per rimuovere i sottomenu.

Ho anche aggiornato la mia risposta. La priorità del tuo hook è molto importante perché add_submenu_page()
e remove_submenu_page()
utilizzano lo stesso hook. Assicurati che il tuo remove_submenu_page()
venga chiamato molto tardi.

I tuoi commenti sono stati utili ma sì, non sono sicuro di come rimuoverlo... anche dopo aver guardato il faq-manager.php all'interno di questo plugin
Sto utilizzando questo plugin: http://wordpress.org/extend/plugins/wordpress-faq-manager/
Ho visto il $parent_slug che menzioni e $menu_slug ma non mi ha aiutato molto... il $parent_slug che abbiamo è corretto ma il $menu_slug è discutibile... Forse puoi risolverlo guardando il plugin stesso.

Ho scelto la strada più semplice e ho trovato un plugin in grado di farlo. Ho usato Adminimize e sono riuscito a farlo facilmente.

Oh caspita sì, avevo dimenticato la possibilità di usare questo plugin. Frank ha recentemente aggiornato il plugin, è molto buono.

Alla fine, ho scoperto i motivi per cui tutte le soluzioni fallivano. All'inizio era un custom post type e non una pagina di sottomenu. E l'url deve essere codificato. La e commerciale semplice (&) nell'url non funziona.
