Estou desenvolvendo um tema filho usando o Wordpress 3.4.2 e a versão de desenvolvimento do Options Framework de David Price . Este é o meu primeiro tema e sou relativamente novo nisso, então dei uma olhada no Wordpress Codex e verifiquei o registro de itens na API.
Sem adulterar nenhum arquivo externo fora do meu tema, fiquei pensando se havia uma maneira de reorganizar onde a página Opções de Tema está localizada dentro da hierarquia do menu Aparência - portanto, quando meu tema é ativado, a posição não é a seguinte. a primeira imagem, mas como a segunda.
Eu sei que você pode criar um menu (como a guia Aparência , Plug-ins , Usuários etc.) ou um submenu ( Temas , Widgets , Menus etc.), mas como eu definiria um submenu, por exemplo: do topo?
Pelo que entendi, em algum lugar existe um pedido que está sendo chamado e outras páginas adicionais dentro do functions.php
arquivo são colocadas depois disso?
No meu arquivo functions.php:
// Add our "Theme Options" page to the Wordpress API admin menu.
if ( !function_exists( 'optionsframework_init' ) ) {
define( 'OPTIONS_FRAMEWORK_DIRECTORY', get_template_directory_uri() . '/inc/' );
require_once dirname( __FILE__ ) . '/inc/options-framework.php';
}
Obrigado.
fonte
Warning: Invalid argument supplied for foreach() in /wp-content/themes/mythemename/functions.php on line 1444
Linha 1444:foreach ($submenu[$menus] as $index => $value){
eWarning: ksort() expects parameter 1 to be array, null given in /wp-content/themes/mythemename/functions.php on line 1468
Linha 1468:ksort($submenu[$menus]);
Respostas:
Aqui está um exemplo;
Primeiro, para descobrir a ordem dos itens do submenu com base em sua chave de matriz, você pode fazer uma
var_dump
variável global no submenu $, que produzirá o seguinte;(Estou usando o menu Postagens e submenu como exemplo)
Podemos ver que meu item de submenu é adicionado à matriz com uma chave 17 após os itens padrão.
Se, por exemplo, eu quiser adicionar meu item de submenu, diretamente após o item de submenu Todas as postagens, preciso fazer isso definindo minha chave de matriz como 6, 7, 8 ou 9 (qualquer coisa após 5 e antes de 10, respectivamente.
É assim que se faz...
Resultado,
... experimente e deixe-nos saber como você vai!
Atualização 1:
Adicione isso ao seu arquivo functions.php;
Minha atualização inclui uma maneira um pouco mais fácil de lidar com a configuração da posição do menu, você só precisa estipular o nome da página do submenu e a posição desejada no menu.
No entanto, se você selecionar uma página de submenuPara contornar isso, o exemplo de Kaiser fornece algumas verificações básicas para isso.$location
igual à de uma chave existente, ela substituirá a chave pela sua, assim o item de menu desaparecerá com o item de menu em seu lugar. Aumente ou diminua o número para solicitar seu menu corretamente, se for o caso. Da mesma forma, se alguém instalar um plug-in que afeta a mesma área de menu e para o qual tem o mesmo$location
item do submenu, o mesmo problema ocorrerá.Atualização 2:
Eu adicionei um bloco de código adicional que verifica todas as chaves existentes na matriz em relação ao desejado
$location
e, se uma correspondência for encontrada, incrementaremos nosso$location
valor1
para evitar que os itens de menu se substituam. Este é o código responsável por isso,Atualização 3: (script revisado para permitir a classificação de vários itens do submenu)
No exemplo acima, você pode direcionar vários submenus e vários itens por submenu, definindo os parâmetros de acordo com a
$target_menu
variável que contém uma matriz multidimensional de valores.Esta revisão impedirá que os itens do submenu se sobrescrevam se eles tiverem a mesma tecla (posição), uma vez que percorrerá até encontrar uma chave (posição) disponível que não exista.
fonte
Warning: Invalid argument supplied for foreach() in /wp-content/themes/mythemename/functions.php on line 1444
Linha 1444:foreach ($submenu[$menus] as $index => $value){
eWarning: ksort() expects parameter 1 to be array, null given in /wp-content/themes/mythemename/functions.php on line 1468
Linha 1468:ksort($submenu[$menus]);
O menu do administrador (e seus problemas)
Como o menu do administrador carece de ganchos e de uma API pública (que permita a movimentação dos itens), é necessário usar algumas soluções alternativas. A resposta a seguir mostra o que está esperando por você no futuro e como você pode contornar, desde que tenhamos o estado atual do núcleo.
Primeiro, devo observar que o scribu está trabalhando em um patch de menu do administrador que deve facilitar o manuseio. A estrutura atual está bastante bagunçada e eu escrevi um artigo sobre isso que em breve estará desatualizado. Espere que o WP 3.6 mude completamente as coisas.
Depois, há também o ponto, que você não deve mais usar as páginas de Opções para temas. Atualmente - existe o »Tema Customizador« para isso.
O plugin
Eu escrevi um plugin que testa isso com a página "Opções de tema" padrão para a página de opções TwentyEleven / Ten. Como você pode ver, não existe uma API real que permita qualquer posição. Então, temos que interceptar o global.
Resumindo: basta seguir os comentários e dar uma olhada nos avisos de administração que eu adicionei para fornecer uma saída de depuração.
Boa sorte e divirta-se.
fonte
Filtros personalizados
Existe outra possibilidade de conseguir isso. Não me pergunte por que não pensei nisso antes. De qualquer forma, há um filtro dedicado a uma ordem de menu personalizada. Basta configurá-lo para
true
permitir um pedido personalizado. Então você tem um segundo gancho para pedir os itens do menu principal. Lá, apenas interceptamosglobal $submenu
e alternamos entre os itens de nosso submenu.Este exemplo move o item Menus acima do item Widgets para demonstrar sua funcionalidade. Você pode ajustá-lo ao que quiser.
fonte
function wpse70916_custom_submenu_order( $menu )
para dizer, reordenar não apenas o Menu , mas também o Tema Opções , Widgets , Editor , etc., tornando-o bastante flexível e também para que os itens não se sobreponham? Obrigado.