Je travaille sur un plugin qui construit un menu de niveau supérieur et réside dans son propre répertoire dans/wp-content/plugins.
Par exemple, le plugin ressemble à ceci:
function main_menu() {
if(function_exists('add_menu_page')) {
add_menu_page('Main Menu Title', 'Main Menu', 'administrator', 'main-menu-handle', 'menu-display');
}
}
add_action('admin_menu', 'main_menu');
J'aimerais créer d'autres éléments de menu en tant que plugins à l'avenir, afin qu'ils puissent résider dans leur propre répertoire dans/wp-content/plugins, mais qu'ils s'ajouteront à ce menu personnalisé.
Idéalement, ces nouveaux plugins s’enregistreraient comme ceci:
function register_submenu() {
if(function_exists('add_submenu_page')) {
add_submenu_page('main-menu-handle', 'Widget Title', 'Widget', 'administrator', 'widget-handle', 'widget_display');
}
}
add_action('admin_menu', 'register_submenu');
Mais je n'arrive pas à faire en sorte que cela fonctionne principalement à cause de la manière dont WordPress utilise les paramètres admin.php et chaîne de requête de page pour naviguer dans les menus personnalisés.
Une idée?
On dirait que vous avez des problèmes pour ajouter des sous-menus d'un plugin à un élément parent enregistré dans un autre plugin.
Ajoutez des priorités à vos actions admin_menu
pour vous assurer que l'élément parent (niveau supérieur) existe au moment où vos plug-ins supplémentaires tentent d'ajouter des éléments à ce menu.
Ajouter le niveau supérieur
add_action('admin_menu', 'main_menu', 100 );
Ajouter des sous-éléments
add_action('admin_menu', 'register_submenu', 105 );
La priorité par défaut est 10, vos deux rappels ont peut-être été exécutés dans le mauvais ordre.
Faites-moi savoir si cela vous a été utile.