Ich habe gerade den Parameter menu_position herausgefunden , anscheinend können Sie das Menü Ihres benutzerdefinierten Beitragstyps fast überall platzieren. Außer über dem Beitragsmenü!
Wie kann ich das erreichen?
Ich habe gerade den Parameter menu_position herausgefunden , anscheinend können Sie das Menü Ihres benutzerdefinierten Beitragstyps fast überall platzieren. Außer über dem Beitragsmenü!
Wie kann ich das erreichen?
Antworten:
Positionen für Hauptmenüpunkte
Parameterbeschreibung für "Menüposition"
$position
( Ganzzahl ) ( optional ) Die Position in der Menüreihenfolge, in der dieses Menü angezeigt werden soll. Wenn dieser Parameter nicht angegeben wird, wird das Menü standardmäßig am unteren Rand der Menüstruktur angezeigt. Je höher die Zahl, desto niedriger ist die Position im Menü.WARNUNG: Wenn zwei Menüelemente dasselbe Positionsattribut verwenden, wird möglicherweise eines der Elemente überschrieben, sodass nur ein Element angezeigt wird! Das Konfliktrisiko kann durch die Verwendung von Dezimalzahlen anstelle von Ganzzahlen verringert werden, z. B. 63,3 anstelle von 63.
Voreinstellung: Ende der Menüstruktur
Das neue JetPack-Plugin platziert seinen Menülink direkt unter dem Dashboard-Link. Dazu wird die Menüreihenfolge auf 0 gesetzt und das Array $ menu_order gefiltert :
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;
}
Was würde aus Neugier passieren, wenn Sie 0 als menu_position versuchen würden?
Ich habe 'menu_postion' => 0, 1,2,3,4 verwendet.
Ist eigentlich egal. Wenn Sie damit herumspielen, können Sie es leicht herausfinden.
Mit 'menu_position' => 1 sollte es unter dem Dashboard-Menüpunkt über dem Trennzeichen platziert werden. 0 Sollte über dem Dashboard platziert werden
Auf der Suche nach einer Lösung im Web, aber nicht gefunden. Macht einfach diesen Trick (zum Beispiel). Hier haben Sie die native Liste der Positionen:
- 2 Dashboard
- 4 Trennzeichen
- 5 Beiträge
- 10 Medien
- 15 Links
- 20 Seiten
- 25 Kommentare
- 59 Abscheider
- 60 Aussehen
- 65 Plugins
- 70 Benutzer
- 75 Werkzeuge
- 80 Einstellungen
- 99 Abscheider
Wenn Sie mehr Elemente haben, können Sie die aktuelle Position für jedes Element lesen, indem Sie das globale $ -Menü drucken:
global $menu;
print_r($menu);
Wenn ich das gut verstehe, kann uns nichts daran hindern, das Menü so neu zu bestellen, wie wir es möchten:
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');
Es funktioniert gut für mich, ich denke das ist echt, ich irre mich?
Dies ist ein Fehler in WordPress. Bitte sehen Sie diesen Thread in Trac: http://core.trac.wordpress.org/ticket/14755
Behoben in 4.4 ...
https://developer.wordpress.org/reference/functions/add_menu_page/#notes
Sie können dies verwenden:
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');
Jetzt können Sie Position 5 verwenden, um Ihr Menü über dem Post-Menü hinzuzufügen.
Hier ist der Vorbehalt zu der ganzen Ausgabe ...
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;
HINWEIS: muss eine Ganzzahl sein und darf noch NICHT gesetzt sein, sonst steht sie ganz unten in der Liste.
Positionieren Sie eine funktionierende Lösung in WordPress 5 und darunter mit dem folgenden Code neu:
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;
});
Dies setzt voraus, dass Sie nicht mehr als einen Menüpunkt haben, der um die Pole-Position kämpft.
Auf demselben Link, den Sie verlinkt haben, heißt es:
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
Wenn Sie also menu_position
so etwas einstellen , 4
sollte es über den Posts stehen.
Eine Position von -1
setzt es über den Dashboard
Link.
Sie können Dezimalwerte (als Zeichenfolgen) verwenden. Beispielsweise habe ich einige benutzerdefinierte Beitragstypen, die ich an der letzten Position im Menü platziert habe (100001, 100002, 100003).
Fügen Sie dann einfach diesen Code ein, um sie über Beiträge und unter Dashboard- Menüelemente zu verschieben.
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 );