Placer un menu de type de publication personnalisé au-dessus du menu des publications À l'aide de menu_position?


Réponses:


14

Positions pour les éléments du menu principal

  • 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 Séparateur

Description des paramètres 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 en bas de la structure du menu. Plus le nombre est élevé, plus sa position dans le menu est basse.

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

Par défaut: bas de la structure du menu


4

Le nouveau plugin JetPack place son lien de menu juste en dessous du lien Dashboard. Il le fait en définissant son ordre de menu à 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 comme menu_position?


2

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

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

L'utilisation de 'menu_position' => 1 devrait le placer sous l'élément de menu Dashboard au-dessus du séparateur. 0 Devrait le placer au-dessus du tableau de bord


2

Vous cherchez une solution sur le web mais vous ne l'avez pas trouvée. Fait simplement cette astuce (par exemple). Voici 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 Séparateur

Si vous avez plus d'é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, donc, je pense que c'est légitime, je me trompe?


Solution très fragile qui repose sur des nombres magiques . Il se briserait dès qu'un autre plugin est ajouté / supprimé qui place un élément parmi les autres.
Walf


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.


Cela n'a pas fonctionné pour moi. Je l'ai placé dans mon plugin sur tout le site où se trouve mon fichier custom-post-type.php
Daniel

1

voici l'avertissement à 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 PAS déjà défini, sinon il va au bas de la liste.


1

Pour une solution de travail dans WordPress 5 et versions antérieures, repositionnez-la avec le code suivant:

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

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


0

Sur le même lien que vous avez lié, il se lit:

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_positionquelque chose comme 4, il devrait le placer au-dessus des messages.

Une position de le -1place au-dessus du Dashboardlien.


J'ai essayé 4 mais c'est exactement la même chose que 5.
janoChen

Hrm. Vous avez essayé 1-3? Je pense que "1" (ou "0") est peut-être le tableau de bord. Peut-être que quelque chose 2-3 fonctionnerait
Zack

0 1 2 3 Va avant le tableau de bord et 4 va sous les messages. C'est vraiment impossible!
janoChen

Sensationnel. cassé beaucoup WordPress? Je ne sais pas alors. : - /
Zack

Je pense que 4 est le séparateur juste au-dessus des messages, et 5 est les messages, donc si vous définissez votre position de menu sur 3, ce sera juste avant le séparateur. Avec la configuration par défaut bien sûr. Définir ma page de plug-in sur 4 a remplacé le séparateur, mais est apparu juste au-dessus des messages. hmmm ...
goldenapples

0

Vous pouvez utiliser des valeurs décimales (sous forme de chaînes). Par exemple, j'ai certains types de messages personnalisés que j'ai placés à la dernière position dans le menu (100001, 100002, 100003).

Ensuite, placez simplement ce code pour les déplacer au-dessus des messages et en dessous des éléments de menu du tableau de bord .

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 );
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.