Verifique se add_menu_page existe ou não

11

Estou trabalhando em um plugin que tenho que liberar em partes.

O problema é que, se houver um menu na página, adicione o novo plug-in ao 2º ou próximo submenu, caso contrário, adicione um novo menu e adicione o plug-in ao 1º submenu.

Minhas perguntas:

  1. Como verificar se existe um menu?
  2. Se eu estiver codificando uma função reutilizável, que será usada em todos os plugins, isso causará uma opção de conflito.
  3. Não sei a ordem da versão do 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
fonte

Respostas:

18

Você pode usar o quarto parâmetro de add_menu_page(), the my_unique_slug, para verificar se a página 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'] é a lista de páginas registradas.

fuxia
fonte
1
FYI, você pode acessar o global sobre a sua própria: global $admin_page_hooks;
Nathan Hangen