Inserire un menu Tipo di post personalizzato sopra il menu Post Utilizzando menu_position?


Risposte:


14

Posizioni per le voci del menu principale

  • 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

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


4

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?


2

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


2

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?


Soluzione molto fragile che si basa su numeri magici . Si interromperebbe non appena vengono aggiunti / rimossi altri plug-in che posizionano un elemento tra gli altri.
Walf,


1

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.


Questo non ha funzionato per me. L'ho inserito nel mio plug-in per tutto il sito in cui si trova il mio file custom-post-type.php
Daniel

1

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.


1

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.


0

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_positionsu qualcosa di simile 4, allora dovrebbe metterlo sopra i post.

Una posizione -1lo mette sopra il Dashboardcollegamento.


Ho provato 4 ma è esattamente lo stesso di 5.
janoChen

Hrm. Hai provato 1-3? Penso che forse "1" (o "0") sia il Dashboard. Forse qualcosa 2-3 funzionerebbe
Zack

0 1 2 3 Va davanti alla Dashboard e 4 va sotto i messaggi. È davvero impossibile!
janoChen,

Wow. rotto molto WordPress? Non lo so allora. : - /
Zack

Penso che 4 sia il separatore proprio sopra Posts, e 5 sia Posts, quindi se imposti la posizione del tuo menu su 3 sarà proprio prima del separatore. Con la configurazione predefinita ovviamente. L'impostazione della pagina del mio plug-in su 4 ha sovrascritto il separatore, ma è apparso appena sopra Post. hmmm ...
goldenapples

0

È 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 );
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.