Ändern der Reihenfolge der Admin-Menüabschnitte?
5 Antworten
- Stimmen
-
- 2010-09-02
Hallo @BinaryBit:
Esist kein Wunder,dass Sieein bisschenfrustriert sind. Das Admin-Menüisteine der stumpfesten undfrustrierendsten Implementierungen durch WordPress Core. Ehrlichgesagt,ich weißnicht,was siegedacht haben,als siees soentworfen haben.
@EAMann hat hervorragende Arbeitgeleistet,um zuerklären,wie die Administratormenüsin WordPressfunktionieren (ich wünschte,ich hätte das lesen können Vor 4 Monaten ... :)
Nachdemich herausgefunden hatte,wieesfunktioniert,warichimmernoch ratlos,damit zu arbeiten,ohnegenug Zeit zuinvestieren,ummeinen Kopfgerade zu halten,währendich versuchte,einfache Dinge zutun. Deshalb habeicheine Menü-API erstellt,die die Arbeitmit dem WordPress-Administratormenü vereinfacht und rationalisiert.
Sie sind zu 100% kompatibelmit den vorhandenen Strukturen von WordPress undimmernoch sehrin Alpha,daich dereinzigebin,der sie verwendet. Ichbin sicher,dasses Anwendungsfällegibt,die sienochnichtbehandeln. Aberich werde den Code hier veröffentlichen,damit Sie und andereihn ausprobieren können.
Sie können die Datei herunterladen,um sieim Verzeichnis Ihres Themas abzulegen: wp-admin -menu-classes.php und das Folgende zeigt,wie Sie die Funktionenin der Datei
functions.php
Ihres Themas aufrufen können:<?php require_once('wp-admin-menu-classes.php'); add_action('admin_menu','my_admin_menu'); function my_admin_menu() { swap_admin_menu_sections('Pages','Posts'); // Swap location of Posts Section with Pages Section rename_admin_menu_section('Media','Photos & Video'); // Rename Media Section to "Photos & Video" delete_admin_menu_section('Links'); // Get rid of Links Section $movie_tags_item_array = get_admin_menu_item_array('Movies','Movie Tags'); // Save off the Movie Tags Menu update_admin_menu_section('Movies',array( // Rename two Movie Menu Items and Delete the Movie Tags Item array('rename-item','item'=>'Movies','new_title'=>'List Movies'), array('rename-item','item'=>'Add New','new_title'=>'Add Movie'), array('delete-item','item'=>'Movie Tags'), )); copy_admin_menu_item('Movies',array('Actors','Add New')); // Copy the 'Add New' over from Actors renamed_admin_menu_item('Movies','Add New','Add Actor'); // Rename copied Actor 'Add New' to 'Add Actor add_admin_menu_item('Movies',array( // (Another way to get a 'Add Actor' Link to a section.) 'title' => 'Alt Add Actor ', 'slug' => 'post-new.php?post_type=actor', ), array(// Add Back the Movie Tags at the end. 'where'=>'end' )); add_admin_menu_item('Movies',$movie_tags_item_array,array(// Add Back the Movie Tags at the end. 'where'=>'end' )); delete_admin_menu_section('Actors'); // Finally just get rid of the actors section }
Darüber hinaus werden diese Funktionen sogar (als Basis)für die Aufnahmein WordPress 3.1 Wenn wir Glück haben,werden diesemöglicherweise sogar zum Standard!
Hi @BinaryBit:
It's no wonder you are a bit frustrated; the admin menu is one of the most obtuse and frustrating implementations through WordPress core. Honestly, I don't know what they were thinking when they designed it that way.
@EAMann did an excellent job of explaining how the admin menus work in WordPress (I wish I had been able to read that about 4 months ago... :)
Still, after I figured it out how it worked I was still at a loss to work with it without devoting enough time to keep my head straight while I tried to do simple things. So that's why I built a Menu API that simplifies and streamlines working with the WordPress admin menu.
They are 100% compatible with WordPress' existing structures and still very much in alpha since I've been the only one using it. I'm sure there are use-cases they do not yet handle. But I'll post the code here for you and others to try out.
You can download the file to drop in your theme's directory here: wp-admin-menu-classes.php and what follows shows how you might call the functions in your theme's
functions.php
file:<?php require_once('wp-admin-menu-classes.php'); add_action('admin_menu','my_admin_menu'); function my_admin_menu() { swap_admin_menu_sections('Pages','Posts'); // Swap location of Posts Section with Pages Section rename_admin_menu_section('Media','Photos & Video'); // Rename Media Section to "Photos & Video" delete_admin_menu_section('Links'); // Get rid of Links Section $movie_tags_item_array = get_admin_menu_item_array('Movies','Movie Tags'); // Save off the Movie Tags Menu update_admin_menu_section('Movies',array( // Rename two Movie Menu Items and Delete the Movie Tags Item array('rename-item','item'=>'Movies','new_title'=>'List Movies'), array('rename-item','item'=>'Add New','new_title'=>'Add Movie'), array('delete-item','item'=>'Movie Tags'), )); copy_admin_menu_item('Movies',array('Actors','Add New')); // Copy the 'Add New' over from Actors renamed_admin_menu_item('Movies','Add New','Add Actor'); // Rename copied Actor 'Add New' to 'Add Actor add_admin_menu_item('Movies',array( // (Another way to get a 'Add Actor' Link to a section.) 'title' => 'Alt Add Actor ', 'slug' => 'post-new.php?post_type=actor', ), array(// Add Back the Movie Tags at the end. 'where'=>'end' )); add_admin_menu_item('Movies',$movie_tags_item_array,array(// Add Back the Movie Tags at the end. 'where'=>'end' )); delete_admin_menu_section('Actors'); // Finally just get rid of the actors section }
What's more, these functions are even under consideration (as a base) for inclusion in WordPress 3.1 so if we're lucky these might even become standard!
-
* Fantastische * Ergänzung zur API!Ich habe Monategebraucht,ummeinen erstenbenutzerdefinierten Menüabschnittmit dem vorhandenen Framework hinzuzufügen (weshalbich den Code viel studiert habe) ... aber Ihre API scheint vielintuitiver zu sein!*Fantastic* addition to the API! It took me months to add my first custom menu section with the existing framework (which is why I studied the code do much) ... but your API seems much more intuitive to use!
- 0
- 2010-09-02
- EAMann
-
* @ EAMann * - Danke!Wenn Sie Vorschlägemachen oder sogar zusammenarbeitenmöchten,um diese zu verbessern,würdeichgerneetwasetablieren,dasesfür alleeinfachermacht,außerfür die wenigen,die diese Fragen und Antworten sehen.*@EAMann* - Thanks! If you want to offer any suggestions or even collaborate on improving it I'd love to get something established that could make it easier for everyone except for just the few who happen to see this Q&A.
- 0
- 2010-09-03
- MikeSchinkel
-
Hat dies den Kerngemacht oderist dies oderetwas Ähnlichesnocherforderlich,um die Reihenfolge der Menüelementeim Administrator zu ändern?did this make core or is this or something similar still required to manipulate the order of menu items in the admin?
- 0
- 2012-09-12
- Q Studio
-
Soweitichfestgestellt habe,wurdees auf WP 3.5 verschobenAs far as i have found, it's been postponed to WP 3.5
- 0
- 2012-09-22
- pixeline
-
Hey Mike - wp_debug lösteinen Fehlerbei dieser Funktion aus: -------- Funktion swap_admin_menu_sections ($from_section,$to_section) { $from_section=get_admin_menu_section ($from_section); if ($from_section) $from_section-> swap_with ($to_section); return $ section; }} --- ---. Hinweis: Undefinierte Variable: AbschnittHey Mike - wp_debug throws an error on this function: -------- function swap_admin_menu_sections($from_section,$to_section) { $from_section = get_admin_menu_section($from_section); if ($from_section) $from_section->swap_with($to_section); return $section; } --- Notice: Undefined variable: section
- 0
- 2012-10-11
- Q Studio
-
- 2012-12-20
Mirist klar,dass diesein alter Threadist,aberich denke,es lohnt sich,ihnmit einer VIELeinfacheren Lösung zu aktualisieren. Bittebeachten Sie,dass diesmit 3.5funktioniert undmit keiner anderen Versiongetestet wurde. Derfolgende Code kannin ein Plugin oderin die Dateifunctions.phpeingefügt werden.
Siehe: http://codex.wordpress.org/Plugin_API/Filter_Reference/menu_order . Leichtmodifiziert,um den Anforderungen des Originalplakats zuentsprechen (ich hoffejedoch,dasserinzwischeneine Lösunggefunden hat ...).
// Rearrange the admin menu function custom_menu_order($menu_ord) { if (!$menu_ord) return true; return array( 'index.php', // Dashboard 'edit.php?post_type=custom_type_one', // Custom type one 'edit.php?post_type=custom_type_two', // Custom type two 'edit.php?post_type=custom_type_three', // Custom type three 'edit.php?post_type=custom_type_four', // Custom type four 'edit.php?post_type=custom_type_five', // Custom type five 'separator1', // First separator 'edit.php?post_type=page', // Pages 'edit.php', // Posts 'upload.php', // Media 'link-manager.php', // Links 'edit-comments.php', // Comments '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', 'custom_menu_order'); // Activate custom_menu_order add_filter('menu_order', 'custom_menu_order');
Alle Elementeim Admin-Menü,die hiernicht aufgeführt sind,werdennichtentfernt. Sie werden am unteren Rand des Menüs angehängt.
I realize this is an old thread, but I think it's worth updating with a MUCH easier solution. Please note that this works with 3.5 and has not been tested with any other version. The following code can be placed in a plugin or the functions.php file.
See: http://codex.wordpress.org/Plugin_API/Filter_Reference/menu_order. Modified slightly to suit the original poster's needs (though, I hope he found a solution by now...).
// Rearrange the admin menu function custom_menu_order($menu_ord) { if (!$menu_ord) return true; return array( 'index.php', // Dashboard 'edit.php?post_type=custom_type_one', // Custom type one 'edit.php?post_type=custom_type_two', // Custom type two 'edit.php?post_type=custom_type_three', // Custom type three 'edit.php?post_type=custom_type_four', // Custom type four 'edit.php?post_type=custom_type_five', // Custom type five 'separator1', // First separator 'edit.php?post_type=page', // Pages 'edit.php', // Posts 'upload.php', // Media 'link-manager.php', // Links 'edit-comments.php', // Comments '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', 'custom_menu_order'); // Activate custom_menu_order add_filter('menu_order', 'custom_menu_order');
Any items in the admin menu that are not listed here won't be removed. They will be appended to the bottom of the menu.
-
Ja,dasist vielbesser,auch um Untermenüelementeneu zu ordnen,können Sie sie deaktivieren und dann zurücksetzen.Yes this is much better, also to re-order submenu items you can unset and then reset them.
- 1
- 2012-12-20
- Wyck
-
- 2010-09-04
Ich verstehe,dass Sie kein Plugin verwendenmöchten,aber der Einfachheit halber versuchen Sieesmit dem Admin Menu Editor Plugin von Janis Elsts.Ordnen Sie Ihre Admin-Menüsnach Beliebenneu an.kann auch Menüelemente ausblenden.
I understand you don't want to use a plugin, but for pure simplicity, try the Admin Menu Editor plugin by Janis Elsts. Rearrange your admin menus any way you like; can also hide menu items.
-
Ich habe dieses Pluginbei der Installation anmehreren Standorten ausprobiert. Esfunktioniert ambesten. Wirmüssenjedoch die Optionenfürjeden Unterstandortmanuell konfigurieren,wenn wireine Installation anmehreren Standorten haben.I tried this plugin in multisite installation .It works best.But we need to manually configure the options for every sub-site if we have multisite Installation.
- 0
- 2010-10-13
- user391
-
- 2012-11-08
Um Menüelemente zu verschieben,verwendeichgerne die Variable Global
$menu
.Wennichbeispielsweise das Menü "Seiten" an den unteren Rand der Menüs verschiebenmöchte,würdeich diesin
functions.php
odereinem Plugin verwenden:function admin_menu_items() { global $menu; $menu[102]=$menu[20];//make menu 102 be the same as menu 20 (pages) $menu[20]=array();//make original pages menu disappear } add_action('admin_menu', 'admin_menu_items');
und wennich die Posts und Links-Menüs austauschen wollte:
function admin_menu_items() { global $menu; $storemenu = $menu[15];//save links menu into $storemenu $menu[15] = $menu[5];//make links menu = posts menu $menu[5] = $storemenu; //make menu 5/posts = $storemenu/links } add_action('admin_menu', 'admin_menu_items');
Ich habe diesen Trickeine Weilebenutzt undihngerademit WP 3.4.1
getestetTo move menu items around, I like using the Global
$menu
variable.For example, if I wanted to move the "Pages" menu to the bottom of the menus, I would use this in
functions.php
or a plugin:function admin_menu_items() { global $menu; $menu[102]=$menu[20];//make menu 102 be the same as menu 20 (pages) $menu[20]=array();//make original pages menu disappear } add_action('admin_menu', 'admin_menu_items');
and if I wanted to swap the Posts and Links menus:
function admin_menu_items() { global $menu; $storemenu = $menu[15];//save links menu into $storemenu $menu[15] = $menu[5];//make links menu = posts menu $menu[5] = $storemenu; //make menu 5/posts = $storemenu/links } add_action('admin_menu', 'admin_menu_items');
Been using this trick a little while, just tested with WP 3.4.1
-
Ich weiß,dass diesein älterer Beitragist,aberin Bezug auf Ihrerstes Snippetbin ich aufein Problemmit der letzten Zeilein der Funktion "admin_menu_items"gestoßen,dasbehoben wurde,indemes durch "unset ($menu [20])"ersetzt wurdeI know this is an older post but with regards to your first snippet I ran into an issue with the last line in the `admin_menu_items` function which was fixed by replacing it with `unset($menu[20]);`
- 0
- 2017-08-04
- hot_barbara
-
- 2012-03-05
Genial. Ich danke dir sehr. Ich habenureinige Codezeilenin meinefunctions.php
eingefügtrequire_once('/extras/wp-admin-menu-classes.php'); add_action('admin_menu','my_admin_menu'); function my_admin_menu() { swap_admin_menu_sections('Pages','Posts'); // Swop location of Posts Section with Pages Section }
Außerdemplatzieren Sie die wp-admin-menu-classes.php in meinem Themenordner undjetzt die ' Die Schaltfläche "Beiträge" wirdmit der Schaltfläche "Seiten"getauscht.
Ich hoffe,dass diesbald Teil des Kerns wird und so,dass wirnicht dasgesamte Menüinnerhalbeiner Funktion schreibenmüssen,umnur zwei Schaltflächenneu anzuordnen.
Tatsächlich waresetwas schwierig,eine genauere Reihenfolgefür 4 Schaltflächen zuerhalten. Um die von 4 Schaltflächen zu ändern: Seiten,Post,Medien,Links Ichmusste denfolgenden Code verwenden:
swap_admin_menu_sections('Pages','Posts'); swap_admin_menu_sections('Media','Links'); swap_admin_menu_sections('Posts','Links');
Awesome. Thank you so much. I just put some lines of code into my functions.php
require_once('/extras/wp-admin-menu-classes.php'); add_action('admin_menu','my_admin_menu'); function my_admin_menu() { swap_admin_menu_sections('Pages','Posts'); // Swop location of Posts Section with Pages Section }
Plus placing the wp-admin-menu-classes.php in my theme folder and now the 'posts' button is swopped with the 'pages' button.
I hope this will become part of the core soon and in a way so that we don't need to write the whole menu within a function to just reorder two buttons.
In fact it was a bit tricky to get a more specified order for 4 buttons. In order to change the of 4 buttons to: Pages, Post, Media, Links I needed to use the folowing code:
swap_admin_menu_sections('Pages','Posts'); swap_admin_menu_sections('Media','Links'); swap_admin_menu_sections('Posts','Links');
Ichbin hierein bisschenfrustriert,nachdemicheinige Stunden damit verbracht habe,diese ziemlicheinfache Aufgabe ohne Glück zuerledigen.
Im Wesentlichen habeich 5benutzerdefinierte Beitragstypen,dieicherstellt habe,und alles,wasichtunmöchte,ist,jeden vonihnenin einerbestimmten Reihenfolge direkt unter dem "Dashboard" anzuzeigen.
Aus der WordPress-Dokumentationgeht hervor,dass Sie diesnicht wirklichtun können,da die höchste Menüreihenfolge "5" zu sein scheint. Und darüber L
Ich vermute,ein Experte,der dies liest,kannmir zeigen,wieeinfachich das Admin-Menügenau sobestellen kann,wieichesmöchte,indemich die Funktionsdatei verwende und ohneein Plugin zu verwenden (von demich weiß,dassesexistiert).
Bitte versuchen Sie,5 separate Post-Typen zuerstellen und diesein einerbestimmten Reihenfolge direkt unter dem Dashboardeinzufügen. Es scheint,dass diesnichtmöglichist.?? ...gibt eseine Art von JQuery-Hack,um dies zuerreichen Arbeit,diejemandmit mirteilen könnte oder vorzugsweise ohnejQuery zu verwenden?