Acabei de descobrir o parâmetro menu_position , parece que você pode colocar o menu do seu tipo de postagem personalizado em quase todos os lugares. Exceto acima do menu Postagens!
Como posso conseguir isso?
Acabei de descobrir o parâmetro menu_position , parece que você pode colocar o menu do seu tipo de postagem personalizado em quase todos os lugares. Exceto acima do menu Postagens!
Como posso conseguir isso?
Respostas:
Posições para itens de menu principais
Descrição do parâmetro para "posição do menu"
$position
( inteiro ) ( opcional ) A posição na ordem dos menus em que este menu deve aparecer. Por padrão, se esse parâmetro for omitido, 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 usarem o mesmo atributo de posição, um dos itens poderá ser substituído, para que apenas um item seja exibido! O risco de conflito pode ser reduzido usando valores decimais em vez de números inteiros, por exemplo, 63.3 em vez de 63.
Padrão: parte inferior da estrutura do menu
O novo JetPack Plugin coloca seu link de menu imediatamente abaixo do link Dashboard. Para isso, defina sua ordem de menu como 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?
Eu usei 'menu_postion' => 0, 1,2,3,4.
Realmente não importa. Se você brinca com ele, pode facilmente descobrir.
Usar 'menu_position' => 1 deve colocá-lo abaixo do item de menu Painel acima do separador. 0 Deve colocá-lo acima do painel
Procurando uma solução na Web, mas não foi encontrada. Simplesmente faz esse truque (por exemplo). Aqui você tem a lista nativa de posições:
- 2 Painel
- 4 Separador
- 5 Postagens
- 10 Mídia
- 15 Links
- 20 Pages
- 25 Comentários
- 59 Separador
- 60 Aparência
- 65 Plugins
- 70 Usuários
- 75 Ferramentas
- 80 Configurações
- 99 Separator
Se você tiver mais itens, poderá ler a posição atual de cada item imprimindo o menu global $:
global $menu;
print_r($menu);
Portanto, se eu entender bem, nada pode impedir que reordenemos 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 é legítimo, estou errado?
Este é um erro no WordPress. Por favor, veja esta discussão no Trac: http://core.trac.wordpress.org/ticket/14755
Corrigido em 4.4 ...
https://developer.wordpress.org/reference/functions/add_menu_page/#notes
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 seu menu acima do menu Postar.
aqui está a ressalva 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 número inteiro e NÃO já está definido, caso contrário, vai para o final da lista.
Para uma solução funcional no WordPress 5 e abaixo, reposicione-a com o seguinte código:
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;
});
Isso pressupõe que você não tenha mais de um item de menu disputando a pole position.
No mesmo link que você vinculou, ele lê:
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
Portanto, se você definir menu_position
algo como 4
, deve colocá-lo acima das postagens.
Uma posição de -1
coloca-o acima do Dashboard
link.
Você pode usar valores decimais (como cadeias). Por exemplo, tenho alguns tipos de postagem personalizados que coloquei na última posição no menu (100001, 100002, 100003).
Em seguida, basta colocar esse código para movê-los acima de Postagens e abaixo dos itens de menu do 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 );