Modificare l'ordine delle sezioni del menu Amministratore?
5 risposta
- voti
-
- 2010-09-02
Ciao @BinaryBit:
Non c'è dameravigliarsi chetu sia unpo 'frustrato;ilmenu di amministrazione è una delleimplementazionipiù ottusee frustranti attraversoil core di WordPress. Onestamente,non so cosa stesseropensando quando l'hannoprogettatoin quelmodo.
@EAMann ha svolto un lavoro eccellente spiegando comefunzionanoi menu di amministrazionein WordPress (vorrei averlo letto a riguardo 4mesifa ... :)
Tuttavia,dopo aver capito comefunzionava,non riuscivo ancora a lavorarci senza dedicare abbastanzatempo atenere latesta drittamentre cercavo difare cose semplici. Eccoperché ho creato un'API Menu che semplificae ottimizzail lavoro conilmenu di amministrazione di WordPress.
Sono compatibili al 100% con le struttureesistenti di WordPresse sono ancoramoltoin alpha dato che sono stato l'unico ad usarlo. Sono sicuro che ci sono casi d'uso chenongestiscono ancora. Mainserirò quiil codiceperchétue gli altripossanoprovarlo.
Puoi scaricare ilfile dainserirenella directory deltuotema qui: wp-admin -menu-classes.php e quanto seguemostra comepotresti chiamare lefunzioninelfile
functions.php
deltuotema:<?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 }
Inoltre,questefunzioni sonopersino presein considerazione (comebase)per l'inclusionein WordPress 3.1 quindi se siamofortunati questipotrebberopersino diventare 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!
-
* Fantastica * aggiunta all'API!Mi ci sono volutimesiper aggiungere lamiaprima sezione dimenupersonalizzato conilframeworkesistente (motivoper cui ho studiatomoltoil codice) ...ma latua API sembramoltopiùintuitiva da usare!*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 * - Grazie!Se vuoi offrire qualche suggerimento o anche collaborarepermigliorarlo,mi piacerebbe chefosse stabilito qualcosa chepotrebbe renderlopiùfacilepertuttitranne cheperi pochi che vedono questo Q&A.*@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
-
questo hafattoilnucleo o è ancoranecessario questo o qualcosa di similepermanipolare l'ordine delle voci dimenunell'amministratore?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
-
Per quanto ho scoperto,è statoposticipato a WP 3.5As far as i have found, it's been postponed to WP 3.5
- 0
- 2012-09-22
- pixeline
-
Hey Mike - wp_debuggenera unerrore su questafunzione: --------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 $ sezione; } --- Avviso: variabilenon definita: sezioneHey 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
Mi rendo conto che questo è un vecchiothread,mapenso che valga lapena aggiornarlo con una soluzione MOLTOpiù semplice. Tienipresente chefunziona con la 3.5e non è statotestato connessun'altra versione. Il codice seguentepuòessereinseritoin unplugin onelfilefunctions.php.
Vedi: http://codex.wordpress.org/Plugin_API/Filter_Reference/menu_order . Modificato leggermenteper soddisfare leesigenze delposter originale (tuttavia,spero che abbiatrovato una soluzione ormai ...).
// 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');
Tuttiglielementinelmenu di amministrazione chenon sonoelencati quinon verranno rimossi. Verranno aggiuntiin fondo almenu.
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.
-
Sì,èmoltomeglio,ancheper riordinareglielementi del sottomenupuoi disimpostarlie quindi ripristinarli.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
Capisco chenon desideri utilizzare unplug-in,maperpura semplicità,provailplug-in Admin Menu Editor di Janis Elsts.Riorganizzai tuoimenu di amministrazione comepreferisci;può anchenascondere le voci dimenu.
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.
-
Hoprovato questopluginin un'installazionemultisito. Funzionameglio,ma dobbiamo configuraremanualmente le opzioniper ogni sito secondario se abbiamo un'installazionemultisito.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
Per spostare le voci dimenu,mi piace usare la variabileglobale
$menu
.Adesempio,se volessi spostareilmenu "Pagine"in fondo aimenu,lo usereiin
functions.php
oin unplugin: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');
e se volessi scambiarei menu Poste Link:
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');
Uso questotrucco da unpo 'ditempo,appenatestato con WP 3.4.1
To 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
-
So che questo è unpostpiù vecchiomaper quanto riguardailtuoprimo snippet ho riscontrato unproblema con l'ultima riganellafunzione `admin_menu_items` che è stato risolto sostituendolo con` unset ($menu [20]); `I 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
Fantastico. Graziemille. Ho appenainserito alcune righe di codicenelmiofunctions.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 }
Inoltreinserendoil wp-admin-menu-classes.php nellamia cartella deltemae orail "ilpulsante deipost viene sostituito dalpulsante "pagine".
Spero che questo diventiprestoparte delnucleoe inmodotale danon dover scrivere l'interomenu all'interno di unafunzioneper riordinare solo duepulsanti.
Ineffetti è stato unpo 'complicato ottenere un ordinepiù specificoper 4pulsanti. Permodificarei 4pulsantiin: Pagine,Post,Media,Collegamenti Avevobisogno di usareil seguente codice:
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');
Sono unpo 'frustrato qui dopo averpassato alcune ore a cercare diportare atermine questo compito abbastanza semplice senzafortuna.
Essenzialmente ho 5tipi dipostpersonalizzati che ho creatoe tutto quello che vogliofare èmostrare ciascuno diessiin un ordine specifico direttamente sotto la "dashboard" .
Dalla documentazione di WordPress sembra chetunonpossa davverofarloperché l'ordine dimenupiù alto sembraessere "5". E al di sopra L
Immagino che qualcheesperto che legga questo articolopossamostrarmiilmodo semplicein cuiposso ordinareilmenu di amministrazioneesattamente come desidero utilizzandoilfile dellefunzionie senza utilizzare unplugin (che soesiste).
Perfavore,vai avantie prova a creare 5tipi dipost separatie includiliin un ordine specifico direttamente sotto la dashboard ... sembra che questonon siapossibile.?? ... c'è qualchetipo di hackjqueryperfarlo lavoro che qualcunopotrebbe condividere conme opreferibilmente senza utilizzarejQuery?