Cómo crear tag.php
¿Cómo puedo crear una plantilla tag.php que funcione para todas las publicaciones que contengan etiquetas?
He creado algunas etiquetas como = Food, Drink y Fruit
la publicación 1 tiene las etiquetas Food y Drink
la publicación 2 tiene las etiquetas Food y Fruit
¿Cómo puedo crear una página individual para esas publicaciones con etiquetas?
Mi código se ve así, pero no muestra nada.
function get_tags_post($tag_name){
$original_query = $wp_query;
$wp_query = null;
$brand_name= $tag_name;
$args=array(
'posts_per_page'=>5, // Mostrar 5 posts por página
'tag' => $brand_name
);
$wp_query = new WP_Query( $args );
if ( have_posts() ) : while (have_posts()) : the_post();
echo '<li>';
single_tag_title();
echo '</li>';
endwhile; endif;
$wp_query = null;
$wp_query = $original_query;
wp_reset_postdata();
}
Por favor, si alguien sabe qué parte del código está mal, dígamelo.

Desafortunadamente todo tu código está mal. Lo que estás haciendo es lo mismo que query_posts
, que nunca debería usarse. Además, nunca reemplaces la consulta principal en ningún tipo de página de archivo o en la página de inicio por una consulta personalizada.
Para crear una página de etiqueta, simplemente haz una copia de tu index.php y renómbrela como tag.php. Aquí tienes una copia del tema integrado, tag.php de twentyfourteen, solo para darte una idea.
<?php
/**
* Plantilla para mostrar páginas de Etiquetas
*
* Se utiliza para mostrar páginas de tipo archivo para publicaciones en una etiqueta.
*
* @link http://codex.wordpress.org/Template_Hierarchy
*
* @package WordPress
* @subpackage Twenty_Fourteen
* @since Twenty Fourteen 1.0
*/
get_header(); ?>
<section id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php if ( have_posts() ) : ?>
<header class="archive-header">
<h1 class="archive-title"><?php printf( __( 'Archivos de Etiqueta: %s', 'pietergoosen' ), single_tag_title( '', false ) ); ?></h1>
<?php
// Mostrar una descripción opcional del término.
$term_description = term_description();
if ( ! empty( $term_description ) ) :
printf( '<div class="taxonomy-description">%s</div>', $term_description );
endif;
?>
</header><!-- .archive-header -->
<?php
$counter = 1; //Inicia el contador para el diseño de columnas de publicaciones
// Inicia el Loop.
while ( have_posts() ) : the_post();
?>
<div class="entry-column<?php echo ( $counter%2 ? ' left' : ' right' ); ?>">
<?php get_template_part( 'content', get_post_format() ); ?>
</div>
<?php
$counter++; //Actualiza el contador
endwhile;
pietergoosen_pagination();
else :
// Si no hay contenido, incluye la plantilla "No se encontraron publicaciones".
get_template_part( 'content', 'none' );
endif;
?>
</div><!-- #content -->
</section><!-- #primary -->
<?php
get_sidebar( 'content' );
get_footer();
También revisa los siguientes enlaces
EDITAR
Solo para comentar sobre tu código, deberías indentar correctamente tu código. Tal como está, tu código es difícil de leer. También es complicado de depurar.
Lee estándares-de-codificación/php/#indentación para más información

Si deseas utilizar tu propia consulta wp_query (lo cual, por cierto, no está nada mal y puede usarse si sabes lo que haces y aplicas medidas de seguridad - como evitar usar $_GET con frecuencia y, si lo haces, intenta usar strip_tags() o convertir a (int) si solo quieres pasar un número).
Puedes realizar consultas para archivos con etiquetas en index.php (si deseas tener una única plantilla universal para publicaciones estándar de WP) o creando tags.php en la raíz de la carpeta de la plantilla principal (donde están index.php y otros archivos de plantilla), que es exactamente igual que index.php pero se activa cuando buscas páginas como: www.webage.com/tag/nombre-de-alguna-etiqueta
Primero, usa get_queried_object(); para obtener el objeto actual. Es recomendable asignarlo a una variable para ahorrar transferencia:
$qObject = get_queried_object();
Si trabajas en index.php, es buena práctica crear una variable para distinguir si es un archivo de etiquetas o no, para usarla más adelante:
$isArchiveTag = (($qObject->taxonomy == 'post_tag')?true:false);
No es necesario crearla si trabajas en tag.php.
Ahora, si usas wp_query, debería verse así:
$postArgs = array(
'post_type' => 'post',
'showposts' => -1,
'post_status' => 'publish',
'parent' => 0,
'hide_empty' => true,
'orderby' => 'date',
'order' => 'DESC',
'tag' => (($isArchiveTag)?$qObject->slug:'')
);
$query = new WP_Query($postArgs);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$currentPost = get_post(); // si deseas declarar una variable para almacenar los datos del post
//inserta tu código aquí
}
}
wp_reset_postdata();
Para obtener el título de la etiqueta activa puedes usar:
single_tag_title( '', false );
o:
$qObject->name;
Para obtener todas las etiquetas como objeto wp_object y asignarlas a una variable, usa:
$tags = get_terms('post_tag');
Diviértete :)
