Ho appena capito il parametro menu_position sembra che tu possa posizionare il menu del tuo tipo di post personalizzato quasi ovunque. Tranne sopra il menu Messaggi!
Come posso farlo?
Ho appena capito il parametro menu_position sembra che tu possa posizionare il menu del tuo tipo di post personalizzato quasi ovunque. Tranne sopra il menu Messaggi!
Come posso farlo?
Risposte:
Posizioni per le voci del menu principale
Descrizione dei parametri per "posizione menu"
$position
( intero ) ( opzionale ) La posizione nell'ordine di menu in questo menu dovrebbe apparire. Per impostazione predefinita, se questo parametro viene omesso, il menu verrà visualizzato nella parte inferiore della struttura del menu. Più alto è il numero, più bassa è la sua posizione nel menu.ATTENZIONE: se due voci di menu utilizzano lo stesso attributo di posizione, una delle voci potrebbe essere sovrascritta in modo da visualizzare solo una voce! Il rischio di conflitto può essere ridotto utilizzando i valori decimali anziché interi, ad esempio 63,3 anziché 63.
Predefinito: parte inferiore della struttura del menu
Il nuovo plug-in JetPack posiziona il collegamento del menu immediatamente sotto il collegamento Dashboard. Lo fa impostando il suo ordine di menu su 0, filtrando l'array $ 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;
}
Per curiosità, cosa accadrebbe se provassi 0 come menu_position?
Ho usato 'menu_postion' => 0, 1,2,3,4.
Non importa davvero. Se ci giochi, puoi facilmente capirlo.
Utilizzando 'menu_position' => 1, posizionalo sotto la voce di menu Dashboard sopra l'elemento separatore. 0 Dovrebbe posizionarlo sopra la Dashboard
Alla ricerca di una soluzione sul Web ma non trovata. Fa semplicemente questo trucco (per esempio). Ecco l'elenco nativo delle posizioni:
- 2 cruscotto
- 4 separatore
- 5 messaggi
- 10 media
- 15 collegamenti
- 20 pagine
- 25 commenti
- 59 Separatore
- 60 aspetto
- 65 plugin
- 70 utenti
- 75 strumenti
- 80 Impostazioni
- 99 Separatore
Se hai più articoli, puoi leggere la posizione corrente per ogni articolo stampando il menu $ globale:
global $menu;
print_r($menu);
Quindi, se capisco bene, nulla può impedirci di riordinare il menu come vogliamo:
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');
Funziona bene per me, quindi penso che sia legittimo, sbaglio?
Questo è un bug in WordPress. Si prega di vedere questa discussione in Trac: http://core.trac.wordpress.org/ticket/14755
Risolto in 4.4 ...
https://developer.wordpress.org/reference/functions/add_menu_page/#notes
Puoi usare questo:
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');
Ora puoi utilizzare la posizione 5 per aggiungere il menu sopra il menu Posta.
ecco l'avvertimento per l'intero problema ...
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;
AVVISO: deve essere un numero intero e NON è già impostato, altrimenti va in fondo all'elenco.
Per una soluzione funzionante in WordPress 5 e versioni successive, riposizionala con il seguente codice:
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;
});
Ciò presuppone che non ci sia più di una voce di menu in lizza per la pole position.
Sullo stesso link che hai collegato, si legge:
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
Quindi, se si imposta menu_position
su qualcosa di simile 4
, allora dovrebbe metterlo sopra i post.
Una posizione -1
lo mette sopra il Dashboard
collegamento.
È possibile utilizzare i valori decimali (come stringhe). Ad esempio, ho alcuni tipi di post personalizzati che ho inserito nell'ultima posizione nel menu (100001, 100002, 100003).
Quindi, basta inserire questo codice per spostarli sopra i post e sotto le voci di menu Dashboard .
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 );