Wie kann ich die Position von Elementen, die von Plugins hinzugefügt wurden, im Admin-Menü steuern?

Nachdem ich an anderer Stelle auf Stack von zwei WP-Plugins gelesen habe, die identische Menüpositionen erzwingen (mit der Wahrscheinlichkeit, dass einer dann nicht erscheint), frage ich mich, wie ich die Position der von Plugins hinzugefügten Menüpunkte steuern kann.

Ich benutze bereits eine function, die solche Untermenüpunkte in “Einstellungen” zu behandeln scheint, und eine andere function, um die Standardeinstellungen (Beiträge, Seiten, Themen, Plugins, Einstellungen usw.) auf “Top Level” -Elemente umzulagern – aber die Positionierung ändert sich nicht von solchen Elementen, die von Plugins hinzugefügt werden.

function custom_menu_order() { return array( //Add items here in desired order. ); } add_filter( 'custom_menu_order', '__return_true' ); add_filter( 'menu_order', 'custom_menu_order' ); 

Als Beispiel wird einer der beiden von WooCommerce hinzugefügten Menüpunkte der obersten Ebene über dem von ContactForm7 hinzugefügten Eintrag und dem anderen unten angezeigt, und es wäre nett, sie entsprechend neu zu ordnen – und auch Gegenstände besser neu anordnen zu können die keine Menüposition erzwingen und stattdessen unten erscheinen.

Ich finde es funktioniert in der Regel gut für die Neuordnung Standard-und ‘edit.php? Post_type = …’ Elemente, aber die mit ‘admin.php? Page = …’ nicht neu bestellen.

Wenn meine Re-Order-function deaktiviert ist, gruppieren sich die beiden WooCommerce-Artikel (‘edit.php? Post_type = product’ und ‘edit.php? Post_type = shop_order’) wie beabsichtigt zusammen, aber wenn die function reaktiviert wird, werden sie geteilt von ContactForm7 (‘admin.php? page = wpcf7’).

Und eines (‘edit.php? Post_type = shop_order’) der WooCommerce CPTs wird nicht neu geordnet – obwohl das andere (‘edit.php? Post_type = product’) funktioniert.

Solutions Collecting From Web of "Wie kann ich die Position von Elementen, die von Plugins hinzugefügt wurden, im Admin-Menü steuern?"

Um die Reihenfolge der Admin-Menüelemente zu ändern, benötigen Sie zwei hooks , zwei filters und eine function . Fügen Sie den folgenden Code in die functions.php Ihres aktuellen Themas ein:

 function wpse_custom_menu_order( $menu_ord ) { if ( !$menu_ord ) return true; return array( 'index.php', // Dashboard 'separator1', // First separator 'edit.php', // Posts 'upload.php', // Media 'link-manager.php', // Links 'edit-comments.php', // Comments 'edit.php?post_type=page', // Pages 'separator2', // Second separator 'themes.php', // Appearance 'plugins.php', // Plugins 'users.php', // Users 'tools.php', // Tools 'options-general.php', // Settings 'separator-last', // Last separator ); } add_filter( 'custom_menu_order', 'wpse_custom_menu_order', 10, 1 ); add_filter( 'menu_order', 'wpse_custom_menu_order', 10, 1 ); 

Das zurückgegebene Array der oben aufgeführten Admin-Menüelemente der obersten Ebene stellt Menüeinträge dar, die von core in ihrer Standardreihenfolge eingefügt wurden. Um Menüelemente hinzuzufügen, die von Plugins hinzugefügt werden, müssen wir sie zu diesem Array hinzufügen. Nehmen wir an, wir haben zwei Plugins hinzugefügt und aktiviert (zum Beispiel: Wordfence und NextCellent Gallery ). Wir müssen zuerst die Namen dieser Menüpunkte finden. Wenn wir auf Wordfence obersten Menüpunkt klicken, Wordfence die resultierende URL mit ?page=Wordfence . Der Teil nach der ?page= ist unser Name ( Wordfence ). Für NextCellent Gallery der Name nextcellent-gallery-nextgen-legacy . Jetzt fügen wir diese Elemente zu unserem Array hinzu:

 return array( 'index.php', // Dashboard 'separator1', // First separator 'edit.php', // Posts 'upload.php', // Media 'link-manager.php', // Links 'edit-comments.php', // Comments 'edit.php?post_type=page', // Pages 'separator2', // Second separator 'themes.php', // Appearance 'plugins.php', // Plugins 'users.php', // Users 'tools.php', // Tools 'separator3', // Third separator 'options-general.php', // Settings 'separator-last', // Last separator 'Wordfence', // Wordfence 'nextcellent-gallery-nextgen-legacy', // NextCellent Gallery ); 

Wir können jetzt Elemente dieses Arrays nach oben und unten verschieben, um die endgültige Reihenfolge zu erhalten.

Hinweis : Sie können das Admin Menu Editor- Plugin auch für Drag & Drop-Aktionen verwenden.

Wenn Sie einen Post-Typ mit register_post_type () erstellen, können Sie die Menüposition festlegen:

menu_position (integer) (optional) Die Position in der Menüfolge sollte der Post-Typ erscheinen. show_in_menu muss wahr sein.

  Default: null - defaults to below Comments 5 - below Posts 10 - below Media 15 - below Links 20 - below Pages 25 - below comments 60 - below first separator 65 - below Plugins 70 - below Users 75 - below Tools 80 - below Settings 100 - below second separator 

Wenn Artikel dieselbe Menüposition haben, werden sie alphabetisch sortiert.

In Ihrem eigenen Plugin können Sie das Level einstellen. Wenn Sie versuchen, die Menüposition eines Plugins zu ändern, das Sie nicht erstellt haben, können viele von ihnen Pluggable haben, oder Sie können ihre Anrufe bearbeiten.