Comment obtenir POST_COUNT correcte et dans les found_posts inclure le fichier

voix
0

J'ai créé un fichier Include qui me permet de filtrer mes requêtes POST en utilisant un menu déroulant de la catégorie. Je suis en train d'obtenir le post_countet found_postsdynamique afin que je puisse afficher Showing 6 out of 12 Postspar exemple. J'inclus ce filtre sur un modèle de page personnalisé avec un WP_Query personnalisé, mais je reçois Showing 1 out of 1 Postsmalgré qu'il y ait 10+ messages. Je crois que la raison pour laquelle il fait cela est parce que le filtre utilise notamment la requête d' une seule page plutôt que ma requête de poste personnalisé. Comment puis - je à mettre à jour cela pour que le filtre utilise ma requête personnalisée de poste?

inc / filter.php:

<?php
    global $wp_query;
    $count = $wp_query->post_count;
    $total = $wp_query->found_posts;
?>

<div class=container>
    <div class=row>
        <div class=col>
            <?php $get_categories = get_categories(); ?>
            <select>
                <option selected disabled>Select category</option>
                <option value=all>All</option>
                <?php
                    if ($get_categories) :
                        foreach ($get_categories as $cat) :
                    ?>
                    <option value=<?php echo $cat->term_id; ?>>
                        <?php echo $cat->name; ?>
                    </option>
                    <?php endforeach; 
                        endif;
                    ?>
            </select>
            <div class=shown-posts>Showing <span class=visible-posts><?php echo $count; ?></span> of <span class=total-posts><?php echo $total; ?></span> posts</div>
        </div>
    </div>
</div>

Et voici mon modèle de page personnalisé:

<?php get_header();?>
<?php 
    $posts = new WP_Query(array(
        'post_type' => 'post'
    ));
?>
<?php if($posts->have_posts()): ?>
    // Here's where I'm including the filter file
    <?php get_template_part( 'inc/filter' ); ?>
    <div class=container post-container>
        <div class=row row-eq-height>
            <?php while ($posts->have_posts()) : $posts->the_post();
                the_title();
            endwhile; ?>
        </div>
    </div>
<?php endif; ?>
Créé 02/12/2019 à 23:56
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
1

La bonne façon de passer des variables des modèles inclus via get_template_part()est de les ajouter à la WordPress query_vars.

Ainsi, dans inc / retirer filter.php tout cela ...

<?php
    global $wp_query;
    $count = $wp_query->post_count;
    $total = $wp_query->found_posts;
?>

Ensuite, dans le principal ajout de modèle ...

<?php 
    $posts = new WP_Query(array(
        'post_type' => 'post'
    ));

    set_query_var( 'count', $posts->post_count );
    set_query_var( 'total', $posts->found_posts );
?>
Créé 03/12/2019 à 00:21
source utilisateur

voix
0

Changer le calcul inc / filter.php à:

<?php
    $count = $posts->post_count;
    $total = $posts->found_posts;
?>

Vous avez raison que l'objet global de WP_Query pointe sur la page unique contenant tout cela. Instanciation d' une nouvelle WP_Query ne remplace pas la WP_Query mondiale . Enfin, notez que rien vos modifications de la portée lorsque vous incluez le fichier de filtre - donc, juste continuer à utiliser la $postsvariable que vous déjà configuré.

Créé 03/12/2019 à 00:34
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more