Vérifiez si add_menu_page existe ou non

11

Je travaille sur un plugin que je dois publier en plusieurs parties.

Le problème est que, s'il y a un menu dans la page, ajoutez le nouveau plugin au 2ème ou au sous-menu suivant, ajoutez un nouveau menu, puis ajoutez le plug-in au 1er sous-menu.

Mes questions:

  1. Comment vérifier qu'il existe un menu?
  2. Si je code une fonction réutilisable, cela ira avec chaque plugin, ce qui provoquera une option de conflit.
  3. Je ne connais pas l'ordre de sortie du plugin.
add_menu_page(
    'Page Title',
    'Top Menu Title',
    'manage_options',
    'my_unique_slug',
    'my_magic_function'
);
add_submenu_page(
    'my_unique_slug',
    'page title',
    'submenu title',
    'manage_options',
    'my_submenu_slug',
    'my_magic_function_of_submenu'
);
Kaushik Kishore
la source

Réponses:

18

Vous pouvez utiliser le quatrième paramètre de add_menu_page(), le my_unique_slug, pour vérifier si la page existe:

if ( empty ( $GLOBALS['admin_page_hooks']['my_unique_slug'] ) )
    add_menu_page(
        'Page Title',
        'Top Menu Title',
        'manage_options',
        'my_unique_slug',
        'my_magic_function'
    );

$GLOBALS['admin_page_hooks'] est la liste des pages enregistrées.

fuxia
la source
1
Pour info, vous pouvez accéder au monde par lui-même: global $admin_page_hooks;
Nathan Hangen