✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Menu de administração do WordPress: reordenação do submenu

19

Uma das coisas sobre trabalhar com a API de menu do WordPress (que é add_menu_page, add_submenu_page e similares) é que não facilita a reordenação dos itens do submenu.

Claro, para certas coisas, como taxonomias ou coisas assim, você pode apenas alterar a ordem em que elas são registradas. Mas digamos que você tenha um menu de administração do WordPress e algumas páginas de submenu nesse menu específico.

Por padrão, o WordPress cria o menu de nível superior e, em seguida, cria imediatamente um item de submenu no menu de nível superior que vincula à mesma página. Em muitos casos, isso pode ser o ideal.

Em alguns casos, porém, você pode querer mudar isso.

Menu de administração do WordPress

Para dar um exemplo de quando você pode querer mudar algo, pode ser algo assim:

  • Você tem um menu de nível superior que oferece opções após a conexão com uma API de terceiros,
  • A API de terceiros requer uma chave de API (ou alguma outra autenticação), então você precisa fornecer configurações para isso primeiro,
  • Por que não tornar o primeiro item de menu Configurações e o segundo item de menu as Ferramentas de API reais?

Obviamente, quando as configurações não foram definidas, é útil também exibir uma mensagem no menu principal de Ferramentas da API informando que o usuário deve clicar na página Configurações para inserir suas configurações.

Mas isso está além do escopo deste post. Por enquanto, aqui está uma maneira de gerenciar a reordenação do menu do lado do servidor. Primeiro o código, depois a explicação.

<?php
add_action('custom_menu_order', __NAMESPACE__.'acmeReorderSubmenuItems);
/**
 * Reorders the menu by placing the second item before the first item.
 */
function acmeReorderSubmenuItems()
{
    global $submenu;
    $newSubmenu = [];
    foreach ($submenu as $menuName => $menuItems) {
        if ('acme-api-tools' === $menuName) {
            $newSubmenu[0] = $menuItems[1];
            $newSubmenu[1] = $menuItems[0];
            $submenu['acme-api-tools'] = $newSubmenu;
            break;
        }
    }
}

De um modo geral, estou usando isso no contexto de um objeto com namespace, mas para este post, estou relegando-o a uma função que existe em um namespace.

Algumas coisas a serem observadas:

  • Estou usando o gancho custom_menu_order que é um lugar ideal para trabalhar nos itens de menu no WordPress,
  • Estou procurando especificamente o submenu acme-api-tools na chave $menuName da variável de array $submenu ,
  • Eu crio uma matriz, $newSubmenu e, em seguida, troco os itens e atribuo o novo submenu ao submenu existente identificado pela chave.

Existem alguns comentários – talvez até problemas (ou pelo menos considerações sérias) – com esta abordagem.

Ou seja, o código espera saber precisamente a chave com a qual estamos procurando trabalhar. Em alguns casos, isso é bom, mas se você deseja modificar um menu para o qual não conhece a chave (como acme-api-tools ), precisará alterar isso.

Em seguida, isso também pressupõe que há apenas dois itens de menu para trocar. É bastante fácil no caso acima, mas se houvesse mais, você provavelmente precisaria de uma função para lidar com a movimentação das coisas e retornar a nova matriz.

O suficiente para começar

Dito isso, a funcionalidade acima deve fornecer informações suficientes para pelo menos como começar a fazer isso, se não mais, e como manipular a matriz do submenu visível

Fonte de gravação: tommcfarlin.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação