Réponses:
Voici un moyen rapide et sale d'obtenir ce que vous voulez.
WordPress stocke les sections du menu d'administration dans un tableau global appelé $menu
. Pour ajouter un séparateur, vous ajoutez un élément au $menu
tableau à l'aide d'un index situé entre les index des options que vous souhaitez séparer.
add_admin_menu_separator()
fonctionJ'ai donc écrit une fonction pour encapsuler la logique de ce que j'ai appelé add_admin_menu_separator()
. Vous devrez choisir un numéro d'index de tableau supérieur à l'option après laquelle vous souhaitez ajouter un séparateur, puis appeler la fonction en add_admin_menu_separator()
passant ledit index comme paramètre.
Par exemple:
add_admin_menu_separator(37);
add_admin_menu_separator()
fonction elle-mêmeVoici la définition de la fonction add_admin_menu_separator()
que vous pouvez copier dans le functions.php
fichier de votre thème . Oui, c'est obscur, mais le code qui crée et utilise le $menu
tableau global l'est également . (Il est prévu de le déprécier éventuellement, heureusement, mais ce sera probablement dans quelques années.)
function add_admin_menu_separator($position) {
global $menu;
$index = 0;
foreach($menu as $offset => $section) {
if (substr($section[2],0,9)=='separator')
$index++;
if ($offset>=$position) {
$menu[$position] = array('','read',"separator{$index}",'','wp-menu-separator');
break;
}
}
ksort( $menu );
}
$menu
dont vous avez besoinPour savoir quel numéro d'index dont vous avez besoin , vous pouvez faire var_dump()
de l' $GLOBALS['menu']
intérieur d' un admin_init
crochet. Voici un peu de code que vous pouvez déposer functions.php
temporairement dans le fichier de votre thème pour voir quelles sont les valeurs. Cela ne fonctionnera que lorsque vous demanderez une URL commençant par /wp-admin/
(mais assurez-vous de le faire avec FTP et non avec l'éditeur de thème intégré ou vous perdrez l'accès à votre site, au moins jusqu'à ce que vous obteniez un accès FTP au functions.php
fichier de votre thème !) :
add_action('admin_init','dump_admin_menu');
function dump_admin_menu() {
if (is_admin()) {
header('Content-Type:text/plain');
var_dump($GLOBALS['menu']);
exit;
}
}
BTW, vous trouverez peut-être ces liens utiles en général pour travailler avec les menus d'administration:
Bien que mes classes de menu d'administration n'offrent pas actuellement un moyen facile d'ajouter des séparateurs, je pense que j'ajouterai maintenant cela quand j'aurai le temps.
C'est aussi simple que:
add_action( 'admin_init', 'add_sep' );
function add_sep() {
if ( ! is_admin() )
return false;
global $menu;
$sep = $menu[4]; // that's the default separator
$pos = 6; // change it for the desired position
$menu = array_merge(
array_slice( $menu, 0, $pos ),
array( $sep ),
array_slice( $menu, $pos + 1, -1)
);
$menu[ $pos - 1 ][4] .= ' menu-top-last';
$menu[ $pos + 1 ][4] .= ' menu-top-first';
}
Remarque: La position du séparateur par défaut ( $menu[4]
) peut être différente selon la configuration que vous (ou vos plugins) avez effectuée avant ce crochet.
Bien sûr, vous pouvez également modifier l' introspection menu-top-first
et les menu-top-last
classes.
Si certains problèmes avec les séparateurs n'étaient pas ajoutés, cela était dû à la façon dont wordpress supprime les séparateurs en double. L'ajout ksort($menu);
au bas de la fonction a corrigé le problème.
Cela s'appuie sur la réponse de MastaBaba, mais ne remplace rien à la position que vous spécifiez - il ajoute simplement le séparateur par la suite.
Utilise également une fonction anonyme, il n'est donc compatible qu'avec PHP version 5.3 et supérieure.
add_action( 'admin_menu', function () {
$position = 29;
global $menu;
$separator = [
0 => '',
1 => 'read',
2 => 'separator' . $position,
3 => '',
4 => 'wp-menu-separator'
];
if (isset($menu[$position])) {
$menu = array_splice($menu, $position, 0, $separator);
} else {
$menu[$position] = $separator;
}
});
Il est un peu difficile de déterminer ce que vous essayez de faire, mais je pense que vous cherchez à ajouter une entrée de niveau supérieur dans le menu d'administration de WordPress.
Voir cette documentation dans le Codex WordPress.
En bref, vous recherchez l'utilisation de la add_menu_page()
fonction, qui prend un certain nombre d'arguments et affiche un élément supplémentaire dans le menu administratif en tant que frère de "Dashboard", "Posts", "Media", etc.
J'espère que j'ai bien compris. :-)
add_menu_page()
.
Ce qui suit annonce une action sur Wordpress qui est exécutée lorsque le menu d'administration est affiché. Le menu d'administration est un tableau et tout ce que vous faites, ici, est d'ajouter un élément de tableau qui définit un séparateur, à la position que vous spécifiez.
D' ici :
add_action( 'admin_menu', 'set_admin_menu_separator' );
function set_admin_menu_separator() {
$position = 79;
global $menu;
$menu[$position] = array(
0 => '',
1 => 'read',
2 => 'separator' . $position,
3 => '',
4 => 'wp-menu-separator'
);
}
Notez que, bien que cela ressemble plutôt à la réponse actuellement acceptée, la réponse actuellement acceptée n'a pas fonctionné pour moi (et, à en juger par les commentaires, pour plusieurs autres).