Respostas:
Aqui está uma maneira rápida e suja de obter o que deseja.
O WordPress armazena seções do menu de administração em uma matriz global chamada $menu
. Para adicionar um separador, você adiciona um elemento à $menu
matriz usando um índice entre os índices das opções que deseja separar.
add_admin_menu_separator()
funçãoEntão, eu escrevi uma função para encapsular a lógica para isso que chamei add_admin_menu_separator()
. Você precisará escolher um número de índice da matriz que seja mais alto do que a opção após a qual deseja adicionar um separador e chamar a função que add_admin_menu_separator()
passa o referido índice como seu parâmetro.
Por exemplo:
add_admin_menu_separator(37);
add_admin_menu_separator()
própria funçãoAqui está a definição da função add_admin_menu_separator()
que você pode copiar no functions.php
arquivo do seu tema . Sim, é misterioso, mas também o código que cria e usa a $menu
matriz global . (Os planos são para acabar com isso, felizmente, mas isso provavelmente vai levar alguns anos.)
function add_admin_menu_separator($position) {
global $menu;
$index = 0;
foreach($menu as $offset => $section) {
if (substr($section[2],0,9)=='separator')
$index++;
if ($offset>=$position) {
$menu[$position] = array('','read',"separator{$index}",'','wp-menu-separator');
break;
}
}
ksort( $menu );
}
$menu
que você precisaPara descobrir o número de índice que você precisa você pode fazer uma da partir de um gancho. Aqui está um pouco de código que você pode soltar temporariamente no arquivo do seu tema para ver quais são os valores. Isso funcionará apenas ao solicitar um URL que comece com (mas certifique-se de usar o FTP e não o editor de temas embutido, ou você perderá o acesso ao seu site, pelo menos até obter acesso FTP ao arquivo do tema !) : var_dump()
$GLOBALS['menu']
admin_init
functions.php
/wp-admin/
functions.php
add_action('admin_init','dump_admin_menu');
function dump_admin_menu() {
if (is_admin()) {
header('Content-Type:text/plain');
var_dump($GLOBALS['menu']);
exit;
}
}
BTW, você pode achar esses links úteis em geral para trabalhar com menus de administração:
Embora minhas classes de menu do administrador atualmente não ofereçam uma maneira fácil de adicionar separadores, acho que agora adicionarei isso quando tiver tempo.
É fácil como:
add_action( 'admin_init', 'add_sep' );
function add_sep() {
if ( ! is_admin() )
return false;
global $menu;
$sep = $menu[4]; // that's the default separator
$pos = 6; // change it for the desired position
$menu = array_merge(
array_slice( $menu, 0, $pos ),
array( $sep ),
array_slice( $menu, $pos + 1, -1)
);
$menu[ $pos - 1 ][4] .= ' menu-top-last';
$menu[ $pos + 1 ][4] .= ' menu-top-first';
}
Nota: A posição padrão do separador ( $menu[4]
) pode ser diferente dependendo da configuração que você (ou seus plug-ins) fez antes deste gancho.
Obviamente, você também pode ajustar a introspecção menu-top-first
e menu-top-last
classes.
Teve alguns problemas com os separadores não serem adicionados, foi devido à maneira como o wordpress remove separadores duplicados. A adição ksort($menu);
à parte inferior da função corrigiu o problema.
Isso se baseia na resposta do MastaBaba, mas não substitui nada na posição especificada - apenas adiciona o separador posteriormente.
Também usa uma função anônima, por isso é compatível apenas com o PHP versão 5.3 e superior.
add_action( 'admin_menu', function () {
$position = 29;
global $menu;
$separator = [
0 => '',
1 => 'read',
2 => 'separator' . $position,
3 => '',
4 => 'wp-menu-separator'
];
if (isset($menu[$position])) {
$menu = array_splice($menu, $position, 0, $separator);
} else {
$menu[$position] = $separator;
}
});
É um pouco difícil determinar o que você está tentando fazer, mas acho que você deseja adicionar uma entrada de nível superior no menu de administração do WordPress.
Veja esta documentação no WordPress Codex.
Em resumo, você está procurando o uso da add_menu_page()
função, que usa vários argumentos e exibe um item adicional no menu administrativo como um irmão de "Painel", "Postagens", "Mídia" etc.
Espero ter acertado. :-)
add_menu_page()
.
A seguir, anúncios para o Wordpress uma ação que é executada quando o menu do administrador é renderizado. O menu admin é uma matriz e tudo o que você está fazendo aqui é adicionar um elemento da matriz que define um separador, na posição que você especificar.
A partir daqui :
add_action( 'admin_menu', 'set_admin_menu_separator' );
function set_admin_menu_separator() {
$position = 79;
global $menu;
$menu[$position] = array(
0 => '',
1 => 'read',
2 => 'separator' . $position,
3 => '',
4 => 'wp-menu-separator'
);
}
Observe que, embora isso se assemelhe à resposta atualmente aceita, a resposta atualmente aceita não funcionou para mim (e, a julgar pelos comentários, para várias outras).