Início » Desenvolvimento WordPress » Entenda melhor o desenvolvimento de tema no WordPress 4.7
Desenvolvimento WordPress

Entenda melhor o desenvolvimento de tema no WordPress 4.7

O WordPress 4.7 veio recheado de novos hooks e funções, como utilizar para agilizar o desenvolvimento de tema e entregar mais valor para o cliente.
dezembro de 2016 /4 min de leitura
Conteúdo escrito por humano
wp-4-7-elvis-pereira

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.

Acompanhe em primeira mão tudo sobre o WordPress

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

hierarquia de template para o 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.

Qual nota você da para este artigo?
Ruim

O que você achou disso?

Clique nas estrelas

Média da classificação 0 / 5. Número de votos: 0

Nenhum voto até agora! Seja o primeiro a avaliar este post.

Excelente
Artigos Relacionados

  1. […] o WordPress sem uma interface pública, mas quando a utiliza é feito através do Temas. E a versão 4.7 veio recheada de novos hooks e funções para agilizar o desenvolvimento de […]

Construa seu site WordPress sob medida com os maiores especialistas em WordPress da America Latina
Conheça a Apiki

Faça um comentário
Cadastre-se rápido

Fazer Login