¿Cambiar el orden de las secciones del menú de administración?
5 respuestas
- votos
-
- 2010-09-02
Hola @BinaryBit:
Noes deextrañar queesté unpocofrustrado;elmenú de administraciónes una de lasimplementacionesmás obtusas yfrustrantes através delnúcleo de WordPress. Honestamente,no séen quéestabanpensando cuando lo diseñaron deesamanera.
@EAMann hizo un excelente trabajo alexplicar cómofuncionan losmenús de administraciónen WordPress (desearía haberpodido leereso sobre Hace 4meses ... :)
Aún así,después de descubrir cómofuncionaba,seguía sinpodertrabajar con él sin dedicareltiempo suficiente amantener la cabeza rectamientrasintentaba hacer cosas simples. Poreso creé una API demenú que simplifica y agilizaeltrabajo conelmenú de administración de WordPress.
Son 100% compatibles con lasestructurasexistentes de WordPress ytodavíaestánmuyen alfa,ya que yo soyel único que las usa. Estoy seguro de que hay casos de uso que aúnnomanejan. Peropublicaréel código aquípara que usted y otros loprueben.
Puedes descargar el archivopara colocarloen el directorio detutema aquí: wp-admin -menu-classes.php y lo que siguemuestra cómopuede llamar a lasfuncionesen el archivo
functions.php
de sutema:<?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 }
Además,estasfuncionesestánincluso bajo consideración (comobase)para suinclusiónen WordPress 3.1 así que,sitenemos suerte,¡estospodríanincluso convertirseen estándar!
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!
-
* ¡Fantástica * adición a la API!Metomómeses agregarmi primera sección demenúpersonalizado conelmarcoexistente (poresoestudiémuchoel código) ... ¡pero su APIparecemuchomásintuitiva de usar!*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 * - ¡Gracias!Si desea ofrecer alguna sugerencia oincluso colaborarparamejorarlo,me encantaríaestablecer algo quepuedafacilitar las cosas atodos,excepto a lospocos que venestaspreguntas y respuestas.*@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
-
¿Esto hizoelnúcleo oesesto o algo similartodavíanecesarioparamanipularel orden de loselementos delmenúen el administrador?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
-
Por lo que heencontrado,se hapospuesto a WP 3.5As far as i have found, it's been postponed to WP 3.5
- 0
- 2012-09-22
- pixeline
-
Hola Mike: wp_debug arroja unerroren estafunción: --------function swap_admin_menu_sections ($from_section,$to_section) { $from_section=get_admin_menu_section ($from_section); si ($from_section) $from_section-> swap_with ($to_section); return $ sección; } --- Aviso: Variableindefinida: secciónHey 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
Me doy cuenta de queestees un hilo antiguo,pero creo que vale lapena actualizarlo con una solución MUCHOmás sencilla. Tengaen cuenta queestofunciona con 3.5 yno se haprobado conninguna otra versión. El siguiente código sepuede colocaren un complemento oen el archivofunctions.php.
Consulte: http://codex.wordpress.org/Plugin_API/Filter_Reference/menu_order . Modificado ligeramentepara adaptarse a lasnecesidades delpóster original (aunqueespero que ya hayaencontrado una solución ...).
// 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');
No seeliminaráningúnelemento delmenú de administración queno seenumere aquí. Se añadirán alfinal delmenú.
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í,estoesmuchomejor,tambiénpara reordenar loselementos del submenú quepuede desarmar y luego restablecerlos.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
Tengoentendido queno desea utilizar un complemento,peroporpura simplicidad,pruebeel complemento Editor demenú de administración de Janis Elsts.Reorganice susmenús de administración de laforma que desee;tambiénpuede ocultarelementos delmenú.
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.
-
Probéeste complementoen unainstalaciónmultisitio. Funcionamejor. Perotenemos que configurarmanualmente las opcionespara cada subsitio sitenemos unainstalaciónmultisitio.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
Paramover loselementos delmenú,me gusta usar la variable
$menu
global.Porejemplo,si quisieramoverelmenú "Páginas" a laparteinferior de losmenús,lo usaríaen
functions.php
oen un complemento: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');
y si quisieraintercambiar losmenús de Publicaciones y Enlaces:
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');
Heestado usandoestetruco untiempo,reciénprobado 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
-
Sé queestaes unapublicaciónmás antigua,pero con respecto a suprimerfragmento,encontré unproblema con la última línea de lafunción `admin_menu_items` que se solucionó reemplazándola 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
Impresionante. Muchasgracias. Acabo deponer algunas líneas de códigoen mifunctions.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 }
Además,coloque wp-admin-menu-classes.php en mi carpeta detemas y ahorael ' Elbotón depublicaciones seintercambia conelbotón de "páginas".
Espero queesto se conviertaen parte delnúcleopronto y de algunamanera quenonecesitemosescribirtodoelmenú dentro de unafunciónpara simplemente reordenar dosbotones.
De hecho,fue unpoco complicado obtener un ordenmásespecíficopara 4botones. Para cambiar losbotones de 4 a: Páginas,Publicar,Medios,Enlaces Necesitaba usarel siguiente código:
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');
Estoy unpocofrustrado aquí después de haberpasado unas horastratando de realizarestatareabastante simple sin suerte.
Básicamente,tengo 5tipos depublicacionespersonalizadas que creé ytodo lo que quiero haceresmostrar cada una deellasen un ordenespecífico directamente debajo del "tablero" .
De la documentación de WordPressparece que realmentenopuede hacerestoporqueel orden demenúmás altoparece ser "5". Yporencima L
Supongo que algúnexperto que leaestopuedemostrarme laforma sencillaen quepuedo ordenarelmenú de administraciónexactamente de lamanera que quiero utilizandoel archivo defunciones y sin utilizar un complemento (que sé queexiste).
Porfavor,intente crear 5tipos depublicacionesindependientese inclúyalasen un ordenespecífico directamente debajo deltablero ...parece queestonoesposible.?? ... hay algúntipo detruco dejquerypara hacerestotrabajo que alguienpueda compartir conmigo opreferiblemente sin utilizarjQuery?