Acabo de descubrir el parámetro menu_position , parece que puedes colocar el menú de tu tipo de publicación personalizada en casi todas partes. ¡Excepto sobre el menú Publicaciones!
¿Cómo puedo lograr eso?
Acabo de descubrir el parámetro menu_position , parece que puedes colocar el menú de tu tipo de publicación personalizada en casi todas partes. ¡Excepto sobre el menú Publicaciones!
¿Cómo puedo lograr eso?
Respuestas:
Posiciones para los elementos del menú principal
Descripción del parámetro para "posición del menú"
$position
( entero ) ( opcional ) La posición en el orden de menú de este menú debería aparecer. De manera predeterminada, si se omite este parámetro, el menú aparecerá en la parte inferior de la estructura del menú. Cuanto mayor sea el número, menor será su posición en el menú.ADVERTENCIA: si dos elementos del menú usan el mismo atributo de posición, uno de los elementos puede sobrescribirse para que solo se muestre un elemento. El riesgo de conflicto se puede reducir mediante el uso de valores decimales en lugar de enteros, por ejemplo, 63.3 en lugar de 63.
Predeterminado: parte inferior de la estructura del menú
El nuevo complemento de JetPack coloca su enlace de menú inmediatamente debajo del enlace del Tablero. Lo hace estableciendo su orden de menú en 0, filtrando la matriz $ menu_order :
function jetpack_menu_order( $menu_order ) {
$jp_menu_order = array();
foreach ( $menu_order as $index => $item ) {
if ( $item != 'jetpack' )
$jp_menu_order[] = $item;
if ( $index == 0 )
$jp_menu_order[] = 'jetpack';
}
return $jp_menu_order;
}
Por curiosidad, ¿qué pasaría si intentaras 0 como menu_position?
He usado 'menu_postion' => 0, 1,2,3,4.
Realmente no importa. Si juegas con él, puedes resolverlo fácilmente.
El uso de 'menu_position' => 1 debería ubicarlo debajo del elemento del menú del Tablero sobre el separador. 0 Debe colocarlo sobre el Tablero
Buscando una solución en la web pero no la encontré. Simplemente hace este truco (por ejemplo). Aquí tienes la lista nativa de puestos:
- 2 tablero de instrumentos
- 4 separador
- 5 publicaciones
- 10 medios
- 15 enlaces
- 20 páginas
- 25 comentarios
- 59 separador
- 60 apariencia
- 65 complementos
- 70 usuarios
- 75 herramientas
- 80 ajustes
- 99 separador
Si tiene más elementos, puede leer la posición actual de cada elemento imprimiendo el menú global $:
global $menu;
print_r($menu);
Entonces, si lo entiendo bien, nada puede impedirnos reordenar el menú como queremos:
function re_order_menu () {
// ------- Put away items
$dashboard = $menu[2]
$separator1 = $menu[4]
$posts = $menu[5]
$media = $menu[10]
$links = $menu[15]
$pages = $menu[20]
$comments = $menu[25]
$separator2 = $menu[59]
$appearance = $menu[60]
$plugins = $menu[65]
$users = $menu[70]
$tools = $menu[75]
$settings = $menu[80]
$separator3 = $menu[99]
// -------- Reset menu
unset($menu[2]);
unset($menu[4]);
unset($menu[5]);
unset($menu[10]);
unset($menu[15]);
unset($menu[20]);
unset($menu[25]);
unset($menu[59]);
unset($menu[60]);
unset($menu[65]);
unset($menu[70]);
unset($menu[75]);
unset($menu[80]);
unset($menu[99]);
// -------- Re-order menu as you want
$dashboard = $menu[2];
$separator1 = $menu[4]
$posts = $menu[5];
$books = $menu[6];
/* my tons of custom items */
$authors = $menu[7];
$requests = $menu[8];
$clients = $menu[9];
$sellers = $menu[10];
$services = $menu[11];
$schedules = $menu[12];
/* let some space after */
$media = $menu[30];
$links = $menu[31];
$pages = $menu[32];
$comments = $menu[33];
$separator2 = $menu[59];
$appearance = $menu[60];
$plugins = $menu[65];
$users = $menu[70];
$tools = $menu[75];
$settings = $menu[80]
$separator3 = $menu[99];
}
add_action('admin_menu', 're_order_menu');
A mí me funciona bien, así que creo que esto es legítimo, ¿me equivoco?
Este es un error en WordPress. Consulte este hilo en Trac: http://core.trac.wordpress.org/ticket/14755
Solucionado en 4.4 ...
https://developer.wordpress.org/reference/functions/add_menu_page/#notes
Puedes usar esto:
function my_move_post () {
global $menu;
$menu[6] = $menu[5]; //move post from post 5 to 6
unset($menu[5]); //free the position 5 so you can use it!
}
add_action('admin_menu', 'my_move_post');
Ahora puede usar la posición 5 para agregar su menú sobre el menú Publicar.
Aquí está la advertencia de todo el asunto ...
WordPress 4.9.2
wp-admin / menu.php:
// If we're to use $_wp_last_object_menu, increment it first.
$ptype_menu_position = is_int( $ptype_obj->menu_position ) ? $ptype_obj->menu_position : ++$_wp_last_object_menu;
AVISO: debe ser un número entero y NO estar configurado ya, de lo contrario, irá al final de la lista.
Para una solución que funcione en WordPress 5 y versiones posteriores, vuelva a colocarla con el siguiente código:
add_filter('custom_menu_order', '__return_true');
add_filter('menu_order', function($menu_order) {
if (
false !== ($k1 = array_search($v1 = 'edit.php', $menu_order))
&& false !== ($k2 = array_search($v2 = 'edit.php?post_type=foo', $menu_order))
) {
array_splice($menu_order, $k1, 0, $v2);
array_splice($menu_order, $k2 + 1, 1);
}
return $menu_order;
});
Esto supone que no tiene más de un elemento de menú compitiendo por la pole position.
En el mismo enlace que vinculó, se lee:
menu_position
(integer) (optional) The position in the menu order the post type should appear.
Default: null - defaults to below Comments
5 - below Posts
10 - below Media
20 - below Pages
60 - below first separator
100 - below second separator
Entonces, si configuras menu_position
algo así 4
, entonces debería ponerlo encima de las publicaciones.
Una posición de lo -1
coloca encima del Dashboard
enlace.
Puede usar valores decimales (como cadenas). Por ejemplo, tengo algunos tipos de publicaciones personalizadas que coloqué en la última posición del menú (100001, 100002, 100003).
Luego, solo coloque este código para moverlos sobre las Publicaciones y debajo de los elementos del menú del Tablero .
function reorder_admin_menu() {
global $menu;
// Add one separator
$menu["3.1"] = array(
0 => '',
1 => 'read',
2 => 'separator_' . "anything_unique",
3 => '',
4 => 'wp-menu-separator'
);
// I have put my menu items waay at the end (exactly these values), so move them up
$menu["3.2"] = $menu[100001];
$menu["3.3"] = $menu[100002];
$menu["3.4"] = $menu[100003];
unset($menu[100001]);
unset($menu[100002]);
unset($menu[100003]);
// move Media menu (position 10) item to front, in the same group
$menu["3.5"] = $menu[10];
unset($menu[10]);
// Debug: ksort($menu); error_log( var_export( $menu, true ) );
}
add_action( 'admin_menu', 'reorder_admin_menu', 999 );