Passando variáveis para um template WordPress de forma eficiente
Um desafio enfrentado pelos desenvolvedores de temas ou plugins get_template_parté a incapacidade de passar variáveis para o template WordPress carregado. Existe, no entanto, uma alternativa usando locate_template.
Visão geral
Neste exemplo, vamos exibir três entradas do Easy Digital Download . Estou usando o EDD há algum tempo e, embora tenha muitos recursos, ainda é surpreendentemente leve.
Estaremos buscando as entradas e salvando-as na variável $edd_download. Em seguida, carregaremos o template WordPress passando a variável. Na verdade, passar a variável é dizer muito: estaremos simplesmente carregando o template de forma que a $edd_downloadvariável tenha o escopo adequado para ser usada no template carregado.
Carregando um modelo do WordPress
Este código pode ser colocado em uma função. Você pode então conectar essa função a uma área do seu tema usando um gancho de ação ou simplesmente chamar a função como uma tag de modelo. Nos meus temas, uso ganchos para que os usuários possam adicionar ou remover conteúdo posteriormente. Isso é tudo que precisamos para o código:
'download',
'posts_per_page' => 3,) );
if ($edd_download) {
$part = locate_template( 'parts/download-home.php' );
if ('' != $part) {
require $part;
}
}
Código do modelo
Agora precisamos do arquivo de modelo do WordPress. Se você notar a chamada acima, locate_templateespera encontrar o arquivo download-home.phpno diretório partsdentro da pasta do tema.
Devemos sempre lembrar de chamar wp_reset_postdata()após um loop foreach se chamamos setup_postdata().
Palavras de encerramento
Então, depois de tudo isso, por que isso é útil? porque os usuários podem criar um modelo em um tema filho e substituir facilmente o modelo original. Trata-se de tornar a vida mais fácil para seus usuários. Claro, isso também pode ser alcançado através de filtros ou criando funções conectáveis, mas alguns usuários podem considerar a edição de um modelo focado em uma tarefa uma abordagem mais limpa do que lidar com um arquivo com muitas funções para várias tarefas diferentes e não relacionadas.