it-swarm.com.de

Admin-Konfigurationsbildschirm ohne Menü

Ich möchte eine Unterkonfiguration von einer Seite im Admin-Panel erstellen, zB:

Ich habe das Konfigurationsmenü folgendermaßen eingestellt:

add_menu_page( 'E+', 'CRE+', 8, 'cr_e_plus_user_config', 'cr_e_plus_user_config');
add_submenu_page( 'cr_e_plus_user_config', 'E+', 'Configurations', 8, 'cr_e_plus_user_config', 'cr_e_plus_user_config');

Von der Seite Configurations muss ich eine andere Seite laden, wenn ich auf einen bestimmten Link klicke. Jetzt möchte ich nicht, dass diese neue Seite im Menü aufgeführt wird, da dafür bestimmte Parameter erforderlich sind, bevor ich sie anzeigen kann.

5
ariefbayu

Admin-Seiten sind im Grunde genommen nichts anderes als ein Haken an eine Funktion, so dass es technisch kein Problem ist, eigene Seiten hinzuzufügen, ohne das Menü zu verwenden.

Mir war keine API-Funktion bekannt, mit der Sie problemlos eigene Seiten registrieren können, aber in Wordpress gibt es eine Hilfsfunktion, die Sie verwenden können: get_plugin_page_hookname() (undokumentierte Funktion). Darüber hinaus muss der Hook in einer globalen Registrierung aller Page Hooks ($GLOBALS['_registered_pages']) registriert sein, damit er zum Zeitpunkt der Seitenanforderung als gültig eingestuft wird.

Ich habe das in einen Beispielcode verpackt, speichere ihn einfach in deinem /wp-content/mu-plugins Ordner: admin_page_demo.php (Wordpress MU-Plugin Beispiel)

Dort finden Sie eine Funktion register_admin_page(), die jeden Rückruf registrieren kann, den Sie für den Hook admin_menu benötigen. Das ist das Wichtige, vergleiche mit Hinzufügen von Administrationsmenüs (Wordpress Codex) .

Die Funktion gibt die URL der neuen Admin-Seite zurück. Sie haben geschrieben, dass Sie möglicherweise weitere Parameter hinzufügen müssen, daher dachte ich, dass dies nützlich sein könnte.

Für die Demo-Seite, die ich in diesem Beispiel fest codiert habe, lautet die URL: /wp-admin/options-general.php?page=adminpagedemo_demo_page.

Denken Sie daran, dass Sie die Sicherheit dieser Seite selbst überprüfen müssen, da dies in Wordpress nicht der Fall ist. So etwas wie

current_user_can( ... );
wp_die( __('You do not have sufficient permissions to access this page.') );

könnte ein hilfreicher zusätzlicher Hinweis sein.

5
hakre