Placer un menu de type message personnalisé au-dessus du menu Messages Utilisation de menu_position?

13

Je viens de comprendre le paramètre menu_position , il semble que vous puissiez placer le menu de votre type de publication personnalisé presque partout. Sauf au-dessus du menu Messages!

Comment puis-je accomplir cela?

    
posée janoChen 07.02.2011 - 19:38

10 réponses

8

Positions pour les éléments de menu principaux

  • 2 tableau de bord
  • 4 séparateur
  • 5 messages
  • 10 médias
  • 15 liens
  • 20 pages
  • 25 commentaires
  • 59 séparateur
  • 60 Apparence
  • 65 plugins
  • 70 utilisateurs
  • 75 outils
  • 80 paramètres
  • 99 Separator

Description du paramètre pour "position du menu"

  

$position ( entier ) ( facultatif ). La position dans l'ordre du menu.   ce menu devrait apparaître. Par défaut, si ce paramètre est omis, le   menu apparaîtra au bas de la structure du menu. Plus le   numéro, le plus bas sa position dans le menu.

     

AVERTISSEMENT: si deux éléments de menu   utiliser le même attribut de position, l'un des éléments peut être écrasé   de sorte qu'un seul élément s'affiche! Le risque de conflit peut être réduit en   en utilisant des valeurs décimales au lieu de valeurs entières, par ex. 63,3 au lieu de 63.

     

Par défaut: bas de la structure du menu

    
réponse donnée Michael Ecklund 21.09.2012 - 03:53
4

Le nouveau plug-in JetPack place son lien de menu immédiatement sous le lien de tableau de bord. Pour ce faire, il définit l'ordre de son menu sur 0 en filtrant le tableau $ 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;
    }

Par curiosité, que se passerait-il si vous essayiez 0 en tant que menu_position?

    
réponse donnée Chip Bennett 28.03.2011 - 21:42
2

J'ai utilisé 'menu_postion' = > 0, 1,2,3,4.

Peu importe vraiment. Si vous jouez avec cela, vous pouvez facilement le comprendre.

Utilisation de 'menu_position' = > 1 devrait le placer sous l'élément de menu Tableau de bord, au-dessus du séparateur. 0 devrait le placer au-dessus du tableau de bord

    
réponse donnée jaredwilli 23.02.2011 - 02:12
1

Vous pouvez utiliser ceci:

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');

Vous pouvez maintenant utiliser la position 5 pour ajouter votre menu au-dessus du menu Post.

    
réponse donnée eduardogoncalves 19.12.2013 - 15:33
1

Vous recherchez une solution sur le Web mais vous ne l'avez pas trouvée. Fait simplement cette astuce (par exemple). Vous avez ici la liste native des postes:

  
  • 2 tableau de bord
  •   
  • 4 séparateur
  •   
  • 5 messages
  •   
  • 10 médias
  •   
  • 15 liens
  •   
  • 20 pages
  •   
  • 25 commentaires
  •   
  • 59 séparateur
  •   
  • 60 Apparence
  •   
  • 65 plugins
  •   
  • 70 utilisateurs
  •   
  • 75 outils
  •   
  • 80 paramètres
  •   
  • 99 Separator
  •   

Si vous avez plusieurs éléments, vous pouvez lire la position actuelle de chaque élément en imprimant le menu $ global:

global $menu; 
print_r($menu); 

Donc, si je comprends bien, rien ne peut nous empêcher de réorganiser le menu comme nous le souhaitons:

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');

Cela fonctionne bien pour moi alors je pense que c'est légitime, je me trompe?

    
réponse donnée Nolan Crochot 18.05.2017 - 00:09
1

Ceci est un bug dans WordPress. Veuillez consulter cette discussion dans Trac: enlace

Fixé en 4.4 ...

enlace

    
réponse donnée Merne 06.09.2012 - 20:41
0

Sur le même lien que vous avez lié, il est écrit:

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

Donc, si vous définissez menu_position sur quelque chose comme 4 , il devrait le placer au-dessus des posts.

Une position de -1 la place au-dessus du lien Dashboard .

    
réponse donnée Zack 07.02.2011 - 19:53
0

Vous pouvez utiliser des valeurs décimales (sous forme de chaînes). Par exemple, certains types de publication personnalisés ont été placés à la dernière position du menu (100001, 100002, 100003).

Ensuite, il vous suffit de mettre ce code pour les déplacer au-dessus des éléments Posts et Dashboard du menu.

.

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 );
    
réponse donnée Vladan 25.11.2015 - 20:09
0

voici la mise en garde sur toute la question ...

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; 

AVIS: doit être un entier et NON déjà défini, sinon il va au bas de la liste.

    
réponse donnée Artistan 20.01.2018 - 16:41
0

Pour une solution de travail dans WordPress 4.9, définissez les menu_position de votre CPT sur 6 , un nombre supérieur à Posts ', puis échangez-les avec le code suivant:

.
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;
});

Cela suppose que vous n'avez pas plus d'un élément de menu en lice pour la pole position.

    
réponse donnée Walf 21.08.2018 - 15:28

Lire d'autres questions sur les étiquettes