Wie richtig POST_COUNT und found_posts innerhalb Include-Datei erhalten

stimmen
0

Ich habe eine Include - Datei erstellt , die ich meine Post - Abfragen mit einer Kategorie Dropdown filtern können. Ich versuche , das zu erhalten post_countund found_postsdynamisch , so kann ich zeige Showing 6 out of 12 Postszum Beispiel. Ich schließe diese Filter auf einer benutzerdefinierte Seitenvorlage mit einem benutzerdefinierten WP_Query, aber ich bin immer Showing 1 out of 1 Postsobwohl es 10+ Beiträge zu sein. Ich glaube , der Grund , warum es dies tut , ist , da die Filter enthalten ist die einzige Seite Abfrage anstatt meine benutzerdefinierten Post - Abfrage. Wie kann ich mich über diese so zu aktualisieren , dass die Filterabfrage meiner benutzerdefinierte Post verwendet?

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>

Und hier ist meine eigene Seitenvorlage:

<?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; ?>
Veröffentlicht am 02/12/2019 um 23:56
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
1

Die richtige Art und Weise variabel zu Vorlagen passieren enthalten über get_template_part()sie an die Wordpress hinzuzufügen ist query_vars.

So in inc / filter.php all dies entfernen ...

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

Dann in der Hauptvorlage add ...

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

    set_query_var( 'count', $posts->post_count );
    set_query_var( 'total', $posts->found_posts );
?>
Beantwortet am 03/12/2019 um 00:21
quelle vom benutzer

stimmen
0

Ändern Sie die Berechnung in inc / filter.php zu:

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

Sie sind richtig , dass das globale WP_Query Objekt auf der einzelnen Seite zeigt all dies enthält. Eine neue WP_Query Instanziierungsanwendung überschreibt nicht die globale WP_Query . Schließlich ist zu beachten , dass nichts über Ihren Umfang ändert sich, wenn Sie die Filterdatei enthalten - so, nur halten die Verwendung von $postsVariablen, die bereits eingerichtet.

Beantwortet am 03/12/2019 um 00:34
quelle vom benutzer

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