Überprüfen Sie, ob add_menu_page vorhanden ist oder nicht

11

Ich arbeite an einem Plugin, das ich in Teilen veröffentlichen muss.

Das Problem ist, wenn es ein Menü auf der Seite gibt, fügen Sie das neue Plugin zum 2. oder nächsten Untermenü hinzu, andernfalls fügen Sie ein neues Menü hinzu und fügen Sie das Plugin dann zum 1. Untermenü hinzu.

Meine Fragen:

  1. Wie überprüfe ich, ob ein Menü vorhanden ist?
  2. Wenn ich eine wiederverwendbare Funktion codiere, die mit jedem Plugin einhergeht, führt dies zu einer Konfliktoption.
  3. Ich kenne die Reihenfolge der Plugin-Version nicht.
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
quelle

Antworten:

18

Mit dem vierten Parameter von add_menu_page()können Sie my_unique_slugüberprüfen, ob die Seite vorhanden ist:

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'] ist die Liste der registrierten Seiten.

Fuxia
quelle
1
Zu Ihrer Information, Sie können auf die globale selbst zugreifen: global $admin_page_hooks;
Nathan Hangen