Menu

Adicionando Menu de Navegação Wordpress - Tema customizado

O Wordpress nos permite criar menus personalizados para serem exibidos no tema, de forma dinâmica. No entanto, é necessário informar ao Wordpress que seu tema tem suporte a eles, assim, conseguimos configurar diretamente pelo menu aparência.

Para informar ao wordpress que o tema dá suporte a menus, precisamos criar o arquivo functions.php na raiz do nosso tema. (Se o arquivo já existir não é necessários criar outro).

Sempre que precisamos informar algo específico par ao wordpress, é através desse arquivo de configurações específico. Nele são utilizadas as Actions Hooks do wordpress.

Cada ação que pode ser especificada, possuí uma Action específica que pode ser consultada neste link.

Para especificar uma ação, criaremos uma função que adiciona o menu que desejamos, e ao inicializar o wordpress, incluiremos a função que criamos para que o menu customizado seja exibido.

Para exemplificar, a função:

function meu_tema_personalizado_registrando_menu(){
    register_nav_menu(
        'menu-navegacao', //id para o menu poder ser referenciado no tema
        'Menu Navegação' //nome para exibição
    ); 
}

//informando ao wordpress qual momento executar nossa função personalizada
add_action('init', 'meu_tema_personalizado_registrando_menu');

Para especificar o local onde o menu deve aparecer, colocamos este código no header.php (para mais informações consulte documentação oficial)

wp_nav_menu(
        array(
                'menu' => 'menu-navegacao'
        )
);
wp_nav_menu( array $args = array(
	'menu'				=> "", // (int|string|WP_Term) Desired menu. Accepts a menu ID, slug, name, or object.
	'menu_class'		=> "", // (string) CSS class to use for the ul element which forms the menu. Default 'menu'.
	'menu_id'			=> "", // (string) The ID that is applied to the ul element which forms the menu. Default is the menu slug, incremented.
	'container'			=> "", // (string) Whether to wrap the ul, and what to wrap it with. Default 'div'.
	'container_class'	=> "", // (string) Class that is applied to the container. Default 'menu-{menu slug}-container'.
	'container_id'		=> "", // (string) The ID that is applied to the container.
	'fallback_cb'		=> "", // (callable|bool) If the menu doesn't exists, a callback function will fire. Default is 'wp_page_menu'. Set to false for no fallback.
	'before'			=> "", // (string) Text before the link markup.
	'after'				=> "", // (string) Text after the link markup.
	'link_before'		=> "", // (string) Text before the link text.
	'link_after'		=> "", // (string) Text after the link text.
	'echo'				=> "", // (bool) Whether to echo the menu or return it. Default true.
	'depth'				=> "", // (int) How many levels of the hierarchy are to be included. 0 means all. Default 0.
	'walker'			=> "", // (object) Instance of a custom walker class.
	'theme_location'	=> "", // (string) Theme location to be used. Must be registered with register_nav_menu() in order to be selectable by the user.
	'items_wrap'		=> "", // (string) How the list items should be wrapped. Default is a ul with an id and class. Uses printf() format with numbered placeholders.
	'item_spacing'		=> "", // (string) Whether to preserve whitespace within the menu's HTML. Accepts 'preserve' or 'discard'. Default 'preserve'.
) );

Criando um tema customizado no Wordpress

Obs: O blogger não permite colocar tags php nos blocos de código. Então toda vez que mencionar entre chaves php me refiro a esse tipo de código:

 

Configuração Básica

Já tendo o wordpress instalado e configurado na sua máquina, para criar um tema novo é bem simples.

Primeiro passo é criar uma pasta para seu novo tema dentro de:

 C:\xampp\htdocs\wordpress\wp-content\themes 

Dentro da sua nova pasta crie um arquivo style.css e outro com nome de index.php.

Essa é a estrutura básica para um tema ser reconhecido.


Se entrar no painel do wordpress será possível visualizar o tema, porém não haverá nenhuma informação relevante como nos outros temas.

Para incluir essas informações sobre tema, é preciso incluir como forma de comentários dentro do arquivo style.css

/*
Theme Name: Aprendendo Wordpress 
Author: Seu nome
Description: Tema customizado criado para aprendizagem do wordpress.
Version: 1.0.0
Tags: aprendizado, customizacao, 
*/

Para que o thumbnail com o preview do tema apareça também é necessário ter essa imagem, nomear screenshot.jpg e incluir na pasta principal.


Para configurar o tema:

É possível incluir todo o site/blog num único arquivo index.php? Sim, funcionaria. Mas não é o objetivo de se criar um tema do Wordpress, pois não refletiria as alterações feitas dentro da plataforma do Wordpress, mas vamos por partes

Criando o Cabeçalho para o tema

Para criar o cabeçalho crie um arquivo chamado header.php.

No arquivo header.php teremos toda estrutura inicial da nossa página html. Literalmente o mas com algumas alterações.

Crie um página html normalmente, porém deixe o código até a abertura da tag body. No lugar do título, entre código PHP, coloque o código wordpress correspondente:

bloginfo('name');  

Logo após o título, também é necessário incluir um código para que todo o layout funciona (inclua este código entre chaves php):

 wp_head(); 

Criando o Rodapé para o tema

Para criar o rodapé crie um arquivo chamado footer.php.

Neste arquivo feche a tag body aberta do cabeçalho e incluia o seguinte código entre chaves php:

wp_footer();

Não se esqueça de fechar a tag html também aberta do cabeçalho. Ao final todos os arquivos irão de unir e formar um arquivo só, por isso temos que abrir e fechar todas as tags.


Se você já tiver uma página em html criada, pode copiar e colar o conteúdo do cabeçalho e do rodapé nos arquivos que criamos para eles.

Configurando o arquivo index.php

Agora que já configurei o cabeçalho e o rodapé, posso chamar esses arquivos no arquivo principal criado: o index.php

Para incluir o arquivo do cabeçalho dentro do index.php, use o seguinte código entre chaves php:

require_once 'header.php';

E para incluir o rodapé, temos um código semelhante:

require_once 'footer.php';