Antworten:
Hier ist ein schneller und schmutziger Weg, um das zu bekommen, was Sie wollen.
WordPress speichert Admin-Menüabschnitte in einem globalen Array namens $menu
. Um ein Trennzeichen hinzuzufügen, fügen Sie dem $menu
Array ein Element hinzu, indem Sie einen Index verwenden, der zwischen den Indizes der Optionen liegt, die Sie trennen möchten.
add_admin_menu_separator()
FunktionAlso habe ich eine Funktion geschrieben, um die Logik für diesen Aufruf zu kapseln add_admin_menu_separator()
. Sie müssen eine Array-Indexnummer auswählen, die höher ist als die Option, nach der Sie ein Trennzeichen hinzufügen möchten, und dann die Funktion aufrufen, die den add_admin_menu_separator()
Index als Parameter übergibt.
Beispielsweise:
add_admin_menu_separator(37);
add_admin_menu_separator()
Funktion selbstHier ist die Definition der Funktion, add_admin_menu_separator()
die Sie in die functions.php
Datei Ihres Themas kopieren können . Ja, es ist geheimnisvoll, aber der Code, der das globale $menu
Array erstellt und verwendet, ist es auch . (Es ist geplant, es zum Glück irgendwann zu verwerfen, aber das wird wahrscheinlich ein paar Jahre dauern.)
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
die Sie benötigen ,Um herauszufinden , welche Indexnummer , die Sie brauchen Sie können ein tun var_dump()
von $GLOBALS['menu']
aus einem admin_init
Haken. Hier ist ein bisschen Code, den Sie functions.php
vorübergehend in die Datei Ihres Themas einfügen können, um die Werte zu ermitteln. Dies funktioniert nur, wenn Sie eine URL anfordern /wp-admin/
, die mitfunctions.php
beginnt (Sie müssen sich jedoch mit FTP und nicht mit dem integrierten Design-Editor befassen, da Sie sonst den Zugriff auf Ihre Site verlieren, zumindest bis Sie einen FTP-Zugriff auf die Datei Ihres Themas erhalten !) :
add_action('admin_init','dump_admin_menu');
function dump_admin_menu() {
if (is_admin()) {
header('Content-Type:text/plain');
var_dump($GLOBALS['menu']);
exit;
}
}
Übrigens, möglicherweise finden Sie diese Links im Allgemeinen hilfreich für die Arbeit mit Admin-Menüs:
Obwohl meine Admin-Menüklassen derzeit keine einfache Möglichkeit zum Hinzufügen von Trennzeichen bieten, werde ich das jetzt hinzufügen, wenn ich Zeit habe.
Es ist ganz einfach:
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';
}
Hinweis: Die Standardtrennzeichenposition ( $menu[4]
) kann unterschiedlich sein, je nachdem, welche Konfiguration Sie (oder Ihre Plugins) vor diesem Hook vorgenommen haben.
Natürlich können Sie auch die Selbstbeobachtung der Klassen menu-top-first
und optimieren menu-top-last
.
Einige Probleme mit nicht hinzugefügten Trennzeichen waren darauf zurückzuführen, dass WordPress doppelte Trennzeichen entfernt. Das Hinzufügen ksort($menu);
am Ende der Funktion hat das Problem behoben.
Dies baut auf der Antwort von MastaBaba auf, ersetzt jedoch nichts an der von Ihnen angegebenen Position - es wird lediglich das Trennzeichen nachträglich hinzugefügt.
Verwendet auch eine anonyme Funktion, sodass diese nur mit PHP ab Version 5.3 kompatibel ist.
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;
}
});
Es ist ein wenig schwierig zu bestimmen, was Sie versuchen, aber ich denke, Sie möchten einen Eintrag der obersten Ebene in das WordPress-Admin-Menü einfügen.
Siehe diese Dokumentation im WordPress-Codex.
Kurz gesagt, Sie suchen nach der Verwendung der add_menu_page()
Funktion, die eine Reihe von Argumenten verwendet und ein zusätzliches Element im Verwaltungsmenü als Geschwister von "Dashboard", "Posts", "Media" usw. anzeigt.
Hoffe, ich habe es richtig verstanden. :-)
add_menu_page()
.
Das Folgende zeigt eine Aktion in Wordpress an, die ausgeführt wird, wenn das Admin-Menü gerendert wird. Das Admin-Menü ist ein Array. Hier fügen Sie lediglich ein Array-Element hinzu, das an der von Ihnen angegebenen Position ein Trennzeichen definiert.
Von hier :
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'
);
}
Beachten Sie, dass, obwohl dies eher der aktuell akzeptierten Antwort ähnelt, die aktuell akzeptierte Antwort für mich nicht funktioniert hat (und, nach den Kommentaren zu urteilen, für mehrere andere).