web-dev-qa-db-fra.com

Interroger toutes les publications avec une balise spécifique

Je dois aller chercher tous les messages avec une balise spécifique, mais je reçois tous les messages à la place. Ma requête fonctionne si je publie une publication avec la balise dont j'ai besoin et répertorie toutes les publications avec cette balise, mais lorsque je publie une publication avec une autre balise, elle récupère la publication récemment publiée.

Ceci est ma requête:

$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();
2
Antwan

Il est beaucoup plus facile de créer un nouveau WP_Query que d'essayer d'effacer ou de remplacer l'original.

Si $ post_tag est un slug de balise, vous pouvez simplement utiliser:

<?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 posts found
}
/* Restore original Post Data */
wp_reset_postdata();
5
Courtney Ivey

Dans votre functions.php

/* Display Related Products */
/* ======================== */

if ( ! function_exists( 'display_related_products' ) ) {

    function display_related_products($post_tag) {
        ?>
        <div class="related-products">

            <!-- simple WP_Query -->
            <?php
                $args = array(
                    'post_type' => 'product',
                    'tag' => $post_tag, // Here is where is being filtered by the tag you want
                    '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
    }
}

Appeler de n'importe où avec

display_related_products('name-of-the-tag');
0
drjorgepolanco