Interogare toate articolele cu o etichetă specifică
Am nevoie să extrag toate articolele cu o etichetă specifică, dar primesc toate articolele în schimb. Interogarea mea funcționează dacă public un articol cu eticheta de care am nevoie și listez toate articolele cu acea etichetă, dar când public un articol cu o altă etichetă, aceasta extrage articolul nou publicat.
Aceasta este interogarea mea:
$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();

Este mult mai ușor să creezi un nou WP_Query decât să încerci să ștergi sau să suprascrii cel original.
Dacă $post_tag este un slug de etichetă, poți folosi simplu:
<?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 {
// nu s-au găsit articole
}
/* Restabilirea datelor originale Post */
wp_reset_postdata();

da, $post_tag este slug-ul etichetei, dar nu am înțeles care este diferența principală în codul tău, îmi pare rău, sunt începător în WordPress

Diferența principală este că codul tău încearcă să anuleze interogarea principală WP în loc să creeze pur și simplu una nouă.

primesc mesajul "niciun post găsit" - îmi pare rău, dar există vreo diferență între tag și slug-ul tag-ului?

În fișierul tău functions.php
/* Afișează Produse Asemănătoare */
/* ============================ */
if ( ! function_exists( 'display_related_products' ) ) {
function display_related_products($post_tag) {
?>
<div class="related-products">
<!-- Interogare WP_Query simplă -->
<?php
$args = array(
'post_type' => 'product',
'tag' => $post_tag, // Aici se filtrează după eticheta dorită
'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
}
}
Apelează din orice loc cu
display_related_products('numele-etichetei');
