Hoe om de juiste POST_COUNT en found_posts binnen include-bestand te krijgen

stemmen
0

Ik heb gemaakt een include-bestand waardoor ik mijn bericht vragen filteren met een categorie dropdown. Ik probeer om het te krijgen post_counten found_postsdynamisch, dus ik kan weergeven Showing 6 out of 12 Postsbijvoorbeeld. Ik omvat dit filter op een aangepaste pagina sjabloon met een aangepaste WP_Query, maar ik krijg Showing 1 out of 1 Postsondanks dat er 10+ berichten. Ik denk dat de reden is om dit te doen is omdat de filter wordt opgenomen, wordt met behulp van de enkele pagina vraag in plaats van mijn aangepaste bericht query. Hoe kan ik gaan over het bijwerken van deze zodat het filter maakt gebruik van mijn aangepaste bericht vraag?

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>

En hier is mijn aangepaste pagina sjabloon:

<?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; ?>
De vraag is gesteld op 02/12/2019 om 23:56
bron van user
In andere talen...                            


2 antwoorden

stemmen
1

De juiste manier om variabele doorgeven aan templates opgenomen via get_template_part()is om ze toe te voegen aan de WordPress query_vars.

Dus in inc / filter.php dit alles te verwijderen ...

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

Dan in de belangrijkste sjabloon toe te voegen ...

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

    set_query_var( 'count', $posts->post_count );
    set_query_var( 'total', $posts->found_posts );
?>
antwoordde op 03/12/2019 om 00:21
bron van user

stemmen
0

Wijzig de berekening in inc / filter.php naar:

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

Je bent juist dat de wereldwijde WP_Query object is niet goed op de enkele pagina met dit alles. Instantiëren een nieuwe WP_Query evenmin aan de wereldwijde WP_Query . Tot slot, er rekening mee dat er niets over uw scope verandert wanneer u het filter bestand op te nemen - dus, gewoon blijven met behulp van de $postsvariabele die u al installatie.

antwoordde op 03/12/2019 om 00:34
bron van user

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