Fügen Sie eine Admin-Seite hinzu, aber zeigen Sie sie nicht im Admin-Menü an

Ich habe ein benutzerdefiniertes Plugin ‘Charts’, das ein eigenes Menü hat. In diesem Menü befinden sich Links zu den 3 Seiten für das Plugin – ‘Charts’, ‘Add Chart’ und ‘Edit Chart’. Ich möchte den Link zu ‘Diagramm bearbeiten’ jedoch nicht anzeigen.

Hier ist, wie ich die Seite in Frage –

$this->pagehook = add_submenu_page('charts', __('Edit Chart'), __('Edit Chart'), 'edit_charts', 'edit-chart', array(&$this, 'on_show_page')); 

Ich habe das Internet durchforstet und kann keinen Weg finden, dies zu tun (das funktioniert). Es ist möglich, ganze Top-Level-Menüs zu entfernen (nicht das, was ich brauche), und Sie können einzelne Einträge aus dem $submenu global entfernen (aber dadurch wird auch die registrierte Fähigkeit entfernt), so dass niemand auf die Seite zugreifen kann –

 global $submenu; if(!empty($submenu['charts'])) : foreach($submenu['charts'] as $key => $page) : if($page[0] === 'Edit Chart') : /** Removes all permissions to access the page */ //unset($submenu['charts'][$key]); /** Removes the title, but the menu entry still exists, so it looks odd */ $submenu['charts'][$key][0] = ''; endif; endforeach; endif; 

Ich habe nachgesehen, um es über CSS zu verstecken, aber ich sehe keinen Weg, dies über den HTML-Code zu tun, den WordPress generiert –

 
  • Edit Chart
  • Ich habe auch über jQuery nachgedacht, aber das hat ähnliche Einschränkungen wie die CSS-Route, und ich möchte nicht glauben, dass ich der einzige bin, der das jemals wollte – es muss einen Weg geben, ich kann es einfach nicht finden!

    Irgendwelche Tipps und Tricks geschätzt.

    Vielen Dank.

    Solutions Collecting From Web of "Fügen Sie eine Admin-Seite hinzu, aber zeigen Sie sie nicht im Admin-Menü an"

    Verwende eine Untermenü-Seite als Eltern-Slug. Das Admin-Menü hat nur zwei Ebenen, so dass die imaginäre dritte Ebene ausgeblendet wird.

    Beispielcode, getestet:

     add_action( 'admin_menu', 'wpse_73622_register_hidden_page' ); function wpse_73622_register_hidden_page() { add_submenu_page( 'options-writing.php', 'Hidden!', 'Hidden!', 'exists', 'wpse_73622', 'wpse_73622_render_hidden_page' ); # /wp-admin/admin.php?page=wpse_73622 } function wpse_73622_render_hidden_page() { echo '

    hello world

    '; }

    In der Dokumentation zu add_submenu_page() Sie, dass Sie Ihre Untermenüverknüpfung von einem Top-Level-Menüelement, zu dem sie gehört, verbergen müssen, indem Sie den slug (1. Argument) auf null :

     add_action( 'admin_menu', 'register_my_custom_submenu_page' ); function register_my_custom_submenu_page() { add_submenu_page( null, 'My Custom Submenu Page', 'My Custom Submenu Page', 'manage_options', 'my-custom-submenu-page', 'my_custom_submenu_page_callback', ); }