Je viens de comprendre le paramètre menu_position, il semble que vous puissiez placer le menu de votre type de message personnalisé presque partout. Sauf au-dessus du menu Posts!
Comment puis-je y parvenir?
Je viens de comprendre le paramètre menu_position, il semble que vous puissiez placer le menu de votre type de message personnalisé presque partout. Sauf au-dessus du menu Posts!
Comment puis-je y parvenir?
Réponses:
Positions pour les éléments du menu principal
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
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?
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
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?
Il s'agit d'un bug dans WordPress. Veuillez consulter ce fil dans Trac: http://core.trac.wordpress.org/ticket/14755
Corrigé dans 4.4 ...
https://developer.wordpress.org/reference/functions/add_menu_page/#notes
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.
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.
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.
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_position
quelque chose comme 4
, il devrait le placer au-dessus des messages.
Une position de le -1
place au-dessus du Dashboard
lien.
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 );