Acabo de descubrir el parámetro de posición del menú parece que puedes colocar el menú de tu tipo de publicación personalizada en casi todas partes. Excepto en el menú de Publicaciones!
¿Cómo puedo lograr eso?
Acabo de descubrir el parámetro de posición del menú parece que puedes colocar el menú de tu tipo de publicación personalizada en casi todas partes. Excepto en el menú de Publicaciones!
¿Cómo puedo lograr eso?
Posiciones para elementos del menú principal
Descripción del parámetro para "posición del menú"
$position
( integer ) ( opcional ) La posición en el orden del menú este menú debería aparecer. Por defecto, si se omite este parámetro, el El menú aparecerá en la parte inferior de la estructura del menú. Cuanto mayor sea el número, cuanto menor sea su posición en el menú.ADVERTENCIA: si hay dos elementos de menú use 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 usando decimales en lugar de valores 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 Panel de control. Lo hace configurando 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 probaras 0 como menu_position?
He usado 'menu_postion' = > 0, 1,2,3,4.
En realidad no importa. Si juegas con él, puedes resolverlo fácilmente.
Usando 'menu_position' = > 1 debería colocarlo debajo del elemento del menú del Panel de control sobre el separador. 0 Debería colocarlo encima del Tablero
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 puedes usar la posición 5 para agregar tu menú arriba del menú de Publicaciones.
Buscando una solución en la web pero no encontré. Simplemente hace este truco (por ejemplo). Aquí tienes la lista nativa de posiciones:
- 2 Panel de control
- 4 separadores
- 5 publicaciones
- 10 medios
- 15 enlaces
- 20 páginas
- 25 comentarios
- 59 Separador
- 60 Apariencia
- 65 complementos
- 70 usuarios
- 75 herramientas
- 80 configuraciones
- 99 Separador
Si tiene más artículos, puede leer la posición actual de cada artículo imprimiendo el menú global de $:
global $menu;
print_r($menu);
Entonces, si entiendo bien, nada puede impedirnos también 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');
Funciona bien para mí, entonces creo que esto es legítimo, ¿me equivoco?
En el mismo enlace que has vinculado, 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
en algo como 4
, entonces deberías ponerlo por encima de las publicaciones.
Una posición de -1
la coloca por encima del enlace Dashboard
.
Puedes usar valores decimales (como cadenas). Por ejemplo, tengo algunos tipos de publicaciones personalizadas que coloqué en la última posición en el menú (100001, 100002, 100003).
Luego, solo coloque este código para moverlos por encima de Publicaciones y debajo de Panel de control .
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 );
Aquí está la advertencia a todo el problema ...
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, de lo contrario, irá al final de la lista.
Para una solución de trabajo en WordPress 4.9, establezca menu_position
a 6
de su CPT, uno más alto que Posts ', luego intercambíelos con el siguiente código:
add_filter('custom_menu_order', '__return_true');
add_filter('menu_order', function($menu_order) {
$k = array_search($v = 'edit.php', $menu_order);
$menu_order[$k] = $menu_order[$k + 1];
$menu_order[$k + 1] = $v;
return $menu_order;
});
Esto supone que no tienes más de un elemento de menú que compite por la pole position.
Lea otras preguntas en las etiquetas custom-post-types wp-admin menus admin admin-menu