Colocación de un menú de tipo de publicación personalizado sobre el menú de publicaciones ¿Utilizando menu_position?

13

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?

    
pregunta janoChen 07.02.2011 - 19:38

10 respuestas

8

Posiciones para elementos del menú principal

  • 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

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ú

    
respondido por el Michael Ecklund 21.09.2012 - 03:53
4

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?

    
respondido por el Chip Bennett 28.03.2011 - 21:42
2

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

    
respondido por el jaredwilli 23.02.2011 - 02:12
1

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.

    
respondido por el eduardogoncalves 19.12.2013 - 15:33
1

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?

    
respondido por el Nolan Crochot 18.05.2017 - 00:09
1

Este es un error en WordPress. Consulte este hilo en Trac: enlace

Se corrigió en 4.4 ...

enlace

    
respondido por el Merne 06.09.2012 - 20:41
0

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 .

    
respondido por el Zack 07.02.2011 - 19:53
0

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 );
    
respondido por el Vladan 25.11.2015 - 20:09
0

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.

    
respondido por el Artistan 20.01.2018 - 16:41
0

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.

    
respondido por el Walf 21.08.2018 - 15:28

Lea otras preguntas en las etiquetas