Consultar todas las entradas con una etiqueta específica
Necesito obtener todas las entradas con una etiqueta específica, pero estoy obteniendo todas las entradas en su lugar. Mi consulta funciona si publico una entrada con la etiqueta que necesito y listo todas las entradas con esa etiqueta, pero cuando publico una entrada con otra etiqueta, está obteniendo la entrada recién publicada.
Esta es mi consulta:
$original_query = $wp_query;
$wp_query = null;
$args=array(
'posts_per_page' => -1,
'tag' => $post_tag
);
$wp_query = new WP_Query( $args );
$post_titles=array();
$i=0;
if ( have_posts() ) :
while (have_posts()) : the_post();
$post_titles[$i]=get_the_ID() ;
$i++;
endwhile;
endif;
$wp_query = null;
$wp_query = $original_query;
wp_reset_postdata();

Es mucho más fácil crear una nueva WP_Query que intentar limpiar o sobrescribir la consulta original.
Si $post_tag es el slug de una etiqueta, puedes usar simplemente:
<?php
$the_query = new WP_Query( 'tag='.$post_tag );
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// no se encontraron entradas
}
/* Restaurar los datos originales del Post */
wp_reset_postdata();

sí, $post_tag es el slug de la etiqueta pero no entendí cuál es la diferencia principal en tu código, lo siento soy nuevo en wordpress

La diferencia principal es que tu código intenta anular la consulta principal de WP en lugar de solo crear una nueva.

me aparece "no se encontraron publicaciones", lo siento pero ¿hay alguna diferencia entre tag y tag slug?

En tu archivo functions.php
/* Mostrar Productos Relacionados */
/* ============================= */
if ( ! function_exists( 'display_related_products' ) ) {
function display_related_products($post_tag) {
?>
<div class="related-products">
<!-- Consulta simple de WP_Query -->
<?php
$args = array(
'post_type' => 'product',
'tag' => $post_tag, // Aquí es donde se filtra por la etiqueta que deseas
'orderby' => 'id',
'order' => 'ASC'
);
$related_products = new WP_Query( $args );
?>
<?php while ( $related_products -> have_posts() ) : $related_products -> the_post(); ?>
<a href="<?php the_permalink(); ?>" class="related-product">
<?php if( has_post_thumbnail() ) : ?>
<?php the_post_thumbnail( 'full', array( 'class' => 'related-product-img', 'alt' => get_the_title() ) ); ?>
<?php endif; ?>
</a>
<?php endwhile; wp_reset_query(); ?>
</div>
<?php
}
}
Llámalo desde cualquier lugar con
display_related_products('nombre-de-la-etiqueta');
