Colocando um menu de tipo de postagem personalizado acima do menu Postagens usando menu_position?

13

Eu acabei de descobrir o parâmetro menu_position . Parece que você pode colocar o menu do seu tipo de post personalizado em quase todos os lugares. Exceto acima do menu Postagens!

Como posso conseguir isso?

    
por janoChen 07.02.2011 / 19:38

10 respostas

8

Posições para itens de menu principais

  • 2 Dashboard
  • 4 Separador
  • 5 postagens
  • 10 Mídia
  • 15 links
  • 20 páginas
  • 25 Comentários
  • 59 Separador
  • 60 Aparência
  • 65 plug-ins
  • 70 usuários
  • 75 ferramentas
  • 80 Configurações
  • 99 Separador

Descrição do parâmetro para "posição do menu"

  

$position ( integer ) ( opcional ) A posição na ordem do menu   este menu deve aparecer. Por padrão, se este parâmetro for omitido, o   O menu aparecerá na parte inferior da estrutura do menu. Quanto maior o   número, menor a sua posição no menu.

     

AVISO: se dois itens de menu   use o mesmo atributo de posição, um dos itens pode ser sobrescrito   de modo que apenas um item seja exibido! O risco de conflito pode ser reduzido   utilizando valores decimais em vez de inteiros, e. 63,3 em vez de 63.

     

Padrão: parte inferior da estrutura do menu

    
por Michael Ecklund 21.09.2012 / 03:53
4

O novo Plug-in do JetPack coloca seu link de menu imediatamente abaixo do link do Painel. Faz isso por definindo sua ordem de menu para 0, filtrando a matriz $ 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;
    }

Por curiosidade, o que aconteceria se você tentasse 0 como menu_position?

    
por Chip Bennett 28.03.2011 / 21:42
2

Eu usei 'menu_postion' = > 0, 1,2,3,4.

Não importa realmente. Se você brincar com isso, você pode facilmente descobrir isso.

Usando "menu_position" = > 1 deve colocá-lo abaixo do item de menu Dashboard acima da coisa do separador. 0 Deve colocá-lo acima do Dashboard

    
por jaredwilli 23.02.2011 / 02:12
1

Você pode usar isto:

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');

Agora você pode usar a posição 5 para adicionar o menu acima do menu Post.

    
por eduardogoncalves 19.12.2013 / 15:33
1

Procurando uma solução na Web, mas não encontrou. Simplesmente faz esse truque (por exemplo). Aqui você tem a lista nativa de posições:

  
  • 2 Dashboard
  •   
  • 4 Separador
  •   
  • 5 postagens
  •   
  • 10 Mídia
  •   
  • 15 links
  •   
  • 20 páginas
  •   
  • 25 Comentários
  •   
  • 59 Separador
  •   
  • 60 Aparência
  •   
  • 65 plug-ins
  •   
  • 70 usuários
  •   
  • 75 ferramentas
  •   
  • 80 Configurações
  •   
  • 99 Separador
  •   

Se você tiver mais itens, poderá ler a posição atual de cada item imprimindo o menu $ global:

global $menu; 
print_r($menu); 

Então, se eu entendi bem, nada pode nos impedir de reordenar o menu como queremos:

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');

Funciona bem para mim, então acho que isso é legal, estou errado?

    
por Nolan Crochot 18.05.2017 / 00:09
1

Este é um bug no WordPress. Por favor, veja este tópico no Trac: enlace

Corrigido em 4,4 ...

enlace

    
por Merne 06.09.2012 / 20:41
0

No mesmo link que você vinculou, está escrito:

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

Então, se você definir menu_position para algo como 4 , ele deverá colocá-lo acima das postagens.

Uma posição de -1 coloca-o acima do link Dashboard .

    
por Zack 07.02.2011 / 19:53
0

Você pode usar valores decimais (como strings). Por exemplo, tenho alguns tipos de post personalizado que coloquei na última posição do menu (100001, 100002, 100003).

Em seguida, basta colocar esse código para movê-los acima de Postagens e abaixo dos itens de menu Painel .

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 );
    
por Vladan 25.11.2015 / 20:09
0

aqui está a advertência para toda a questão ...

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; 

AVISO: deve ser um inteiro e NÃO definido, caso contrário, vai para o final da lista.

    
por Artistan 20.01.2018 / 16:41
0

Para uma solução de trabalho no WordPress 4.9, defina o menu_position para 6 de seu CPT, um maior que Postagens 'e troque-o pelo seguinte código:

add_filter('custom_menu_order', '__return_true');
add_filter('menu_order', function($menu_order) {
    $k = array_search($v = 'edit.php', $menu_order);
    $menu_order[$k] = $menu_order[$k + 1];
    $menu_order[$k + 1] = $v;
    return $menu_order;
});

Isso pressupõe que você não tenha mais do que um item de menu competindo pela pole position.

    
por Walf 21.08.2018 / 15:28