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 $menuArray 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.phpDatei Ihres Themas kopieren können . Ja, es ist geheimnisvoll, aber der Code, der das globale $menuArray 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 );
}
$menudie Sie benötigen ,Um herauszufinden , welche Indexnummer , die Sie brauchen Sie können ein tun var_dump()von $GLOBALS['menu']aus einem admin_initHaken. Hier ist ein bisschen Code, den Sie functions.phpvorü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-firstund 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).