O WordPress 4.7 veio cheio de novidades que vieram agregar e deixar ainda melhor o desenvolvimento de tema, foram adicionadas novas funções, hooks e comportamentos que podem mudar totalmente a forma que você desenvolve atualmente.
A função get_theme_file_uri()
e suas agregadas.
A função get_template_part()
foi introduzida no WordPress 3.0, ela é fundamental no desenvolvimento de tema e tema filho. Esta função busca no tema filho pelo arquivo especificado, se o arquivo não for encontrado, ela busca tal arquivo no tema pai. Isto permite facilmente que uma template part seja sobrescrita no tema filho.
A nova função get_theme_file_uri()
introduzida no WordPress 4.7, habilita este comportamento de tema filho para URLs de arquivos do tema, por exemplo, quando um arquivo CSS ou JavaScript é printado:
wp_enqueue_script( 'my-script', get_theme_file_uri( 'js/my-script.js' ) );
O código acima printa a URL do arquivo js/my-script.js
do seu tema filho se ele existir, caso o arquivo não exista no tema filho, então é printado a URL do arquivo contido no tema pai, assim como a função get_template_part()
.
A função get_theme_file_path()
também foi introduzida. Ela é equivalente ao caminho do get_theme_file_uri()
. Um caso de uso para esta função é se você gosta de gerar dinamicamente o parâmetro de versão para seus recursos printados, com base no último timestamp de modificação do arquivo (usando filemtime()
):
wp_enqueue_script( 'my-script', get_theme_file_uri( 'js/my-script.js' ), array(), filemtime( get_theme_file_path( 'js/my-script.js' ) ) );
E para finalizar, também foram introduzidas as funções get_parent_theme_file_uri()
e get_parent_theme_file_path()
que também retornam a URL ou o caminho do arquivo no tema pai (independente se o arquivo existir ou não no tema filho). Estas funções podem ser usadas em substituição as funções get_template_directory_uri()
e get_template_directory()
, respectivamente.
O filtro {$type}_template_hierarchy
no desenvolvimento de tema
Este novo filtro nomeado dinamicamente permite a inclusão de novos arquivos na hierarquia de templates do WordPress. Embora já seja possível executar tal tarefa usando o filtro já existente chamado template_include
, este novo filtro permite que tal tarefa seja feita de uma forma muito mais limpa. Nome dos filtros já disponíveis:
embed_template_hierarchy
404_template_hierarchy
search_template_hierarchy
frontpage_template_hierarchy
home_template_hierarchy
taxonomy_template_hierarchy
attachment_template_hierarchy
single_template_hierarchy
page_template_hierarchy
singular_template_hierarchy
category_template_hierarchy
tag_template_hierarchy
author_template_hierarchy
date_template_hierarchy
archive_template_hierarchy
paged_template_hierarchy
index_template_hierarchy
Aqui está um exemplo do uso deste novo filtro para adicionar um arquivo baseado no ano ao topo da hierarquia para arquivos de data:
add_filter( 'date_template_hierarchy', function( array $templates ) { $year = get_query_var( 'year' ); array_unshift( $templates, "year-{$year}.php" ); return $templates; } );
Aqui está um exemplo um pouco mais complexo de adicionar um arquivo à hierarquia para um arquivo de categoria com base no valor de seu campo meta de termo:
add_filter( 'category_template_hierarchy', function( array $templates ) { $format = get_term_meta( get_queried_object_id(), 'format', true ); if ( $format ) { $new = "category-format-{$format}.php"; $pos = array_search( 'category.php', $templates ); array_splice( $templates, $pos, 0, $new ); } return $templates; } );
Este filtro também permite que os plugins de debug acessem e exibam a hierarquia de template completa para cada solicitação, para que você possa ver quais arquivos o WordPress está buscando em seu tema. A versão mais recente do Query Monitor já suporta esta funcionalidade.
Nomes de templates mais simples para conteúdo com slugs Non-ASCII
Dado um post ou termo com um nome Non-ASCII, como hello-world-?, a forma URL-encoded do nome é usada na hierarquia do template. Por exemplo, na visualização deste post, na hierarquia anterior ao WordPress 4.7:
single-post-hello-world-%f0%9f%98%80.php
single-post.php
single.php
singular.php
index.php
Isso não é muito fácil de usar, então o WordPress 4.7 adicionou um novo template de prioridade mais alta à hierarquia que usa a forma não codificada do nome:
single-post-hello-world-?.php
single-post-hello-world-%f0%9f%98%80.php
single-post.php
single.php
singular.php
index.php
Isso torna muito mais claro o que um arquivo de template se refere ao construir templates para posts específicas ou termos que incluem caracteres Non-ASCII em seu nome.
O WordPress 4.7 está recheado de novidades, aproveite cada uma delas para tornar o desenvolvimento de tema o mais produtivo possível, assim poupando tempo e fazendo uma entrega de valor ainda maior para seus clientes.