J'essaie de supprimer un élément de menu et d'essayer plusieurs approches, mais je n'ai pas eu de chance. Il a été créé à partir d'un plugin FAQ.
Si j'utilise cette ligne:
remove_menu_page( 'edit.php?post_type=question' );
Cela supprimera le menu principal, cependant, je ne souhaite supprimer que deux éléments de sous-menu contenus dans cette adresse URL edit.php?post_type=question
.
Pour l'élément que je veux supprimer, le chemin dans la barre d'adresse me donne les informations suivantes:edit-tags.php?taxonomy=faq-topic&post_type=question
etedit-tags.php?taxonomy=faq-tags&post_type=question
J'ai essayé plusieurs solutions, y compris remove_menu_page
et remove_submenu_page
, en vain.
Ce qui a échoué jusqu'à présent:
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 );
Veuillez lire le Codex . remove_submenu_page()
a besoin de deux paramètres et du bon crochet.
Et (très) _ _ important: Utilisez une priorité très très élevée dans votre crochet! Si vous utilisez une priorité basse, votre fonction sera exécutée avant que les menus ne soient ajoutés. Donc, il n'y a pas de menu à supprimer. Si vous utilisez une priorité élevée, il y a de fortes chances que votre fonction soit exécutée après les menus ont été ajoutés.
Cela pourrait être la partie la plus délicate.
METTRE À JOUR
Après avoir installé et inspecté le plugin, j'ai trouvé la solution. Il y a plusieurs problèmes et quelques points difficiles.
Les sous-menus sont non ajoutés avec add_submenu_page()
, ils sont ajoutés avec un type de publication personnalisé. Une simple recherche par add_submenu_page()
, copiez les slugs du menu et en supprimant les menus doivent échouer. Je dois chercher la limace cpt et l'utiliser.
Après global $submenu; var_dump( $submenu );
j'obtiens cette sortie
[more elements]
'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 'Neue 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 'FAQ Titel' (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 'FAQ Tags' (length=8)
1 => string 'manage_categories' (length=17)
2 => string 'edit-tags.php?taxonomy=faq-tags&post_type=question' (length=54)
[ more elements ]
Maintenant, il était facile de supprimer les sous-menus avec edit.php?post_type=question
comme slug de menu et edit-tags.php?taxonomy=faq-topic&post_type=question
/edit-tags.php?taxonomy=faq-tags&post_type=question
comme slug de sous-menu.
Si vous observez attentivement, l'esperluette (&) est une entité html. Il n'est pas possible simplement de copier la partie URL et de l'insérer. Donc, vous ne pouvez pas supprimer une page de sous-menu avec une URL non codée, elle doit être encodée avec une URL.
Et voici le code final:
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}" );
}