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_hierarchy404_template_hierarchysearch_template_hierarchyfrontpage_template_hierarchyhome_template_hierarchytaxonomy_template_hierarchyattachment_template_hierarchysingle_template_hierarchypage_template_hierarchysingular_template_hierarchycategory_template_hierarchytag_template_hierarchyauthor_template_hierarchydate_template_hierarchyarchive_template_hierarchypaged_template_hierarchyindex_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.phpsingle-post.phpsingle.phpsingular.phpindex.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-?.phpsingle-post-hello-world-%f0%9f%98%80.phpsingle-post.phpsingle.phpsingular.phpindex.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.
