get_template_part() — Modularizar templates de tema
Causa
Duplicar código HTML em múltiplos templates dificulta manutenção. Uma alteração precisa ser replicada em vários arquivos.
Como resolver
Crie templates parciais na pasta do tema e carregue com get_template_part(). Passe dados usando o terceiro argumento $args (desde WP 5.5), evitando variáveis globais.
PHP
<?php
// Estrutura de arquivos:
// theme/
// template-parts/
// card/
// card.php ← genérico
// card-produto.php ← específico para produto
// card-evento.php ← específico para evento
// Uso no template principal (index.php, archive.php)
while (have_posts()) :
the_post();
// Carrega template específico ou fallback para o genérico
get_template_part('template-parts/card/card', get_post_type(), [
'show_excerpt' => true,
'image_size' => 'medium',
'show_meta' => is_archive(),
]);
endwhile;
// Dentro do template-parts/card/card-produto.php:
/*
<?php
$args = $args ?? [];
$show_excerpt = $args['show_excerpt'] ?? false;
$image_size = $args['image_size'] ?? 'thumbnail';
echo '<article class="card card-produto">';
echo '<h2>' . esc_html(get_the_title()) . '</h2>';
if ($show_excerpt) echo '<p>' . get_the_excerpt() . '</p>';
echo '</article>';
*/