web-dev-qa-db-de.com

Fragen Sie die Gesamtzahl der Beiträge ab

Verwenden eines Suchfilter-Plugins. Ich benutze, um die Gesamtzahl der Beiträge zu erhalten, die in der Datenbank vorhanden sind

 $wp_query->found_posts

Wenn ein Benutzer jedoch die Ergebnisse auf der Seite filtert, ändert sich diese Anzahl je nachdem, wie viele Beiträge im Filter angezeigt werden.

Wie kann ich die statische Gesamtzahl der Beiträge ermitteln, die sich nicht ändern, unabhängig davon, was der Benutzer filtert?


Update: Dies ist mein vollständiger Vorlagencode. Ich habe die folgenden Antworten ausprobiert, aber mit meiner Vorlage funktioniert es nicht. Irgendwelche Ideen?

if ( $query->have_posts() )
{
    ?>
<ul id="florefs">
    <?php
    while ($query->have_posts())
    {
        $query->the_post();

        ?>

        <li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><i class="x-icon florex x-icon-angle-right" data-x-icon="" aria-hidden="true"></i>&nbsp;<?php the_field('br_name'); ?></a>
        <div id="flosex"><span class="fimi"><?php the_field('br_category'); ?></span><span class="flag <?php echo strtolower(get_field('br_heritage')); ?>"></span><span class="fama"><?php the_field('br_heritage'); ?></span></div></li>

        <?php
    }
    ?>
</ul>
    <div class="filhead">Page <?php echo $query->query['paged']; ?> of <?php echo $query->max_num_pages; ?></div>

    <div class="pagination">

        <div class="nav-next"><?php previous_posts_link( '<i class="x-icon x-icon-arrow-left" data-x-icon="" aria-hidden="true"></i> Previous page' ); ?></div>
        <div class="nav-previous"><?php next_posts_link( 'Next page <i class="x-icon x-icon-arrow-right" data-x-icon="" aria-hidden="true"></i>', $query->max_num_pages ); ?></div>

        <?php
            /* example code for using the wp_pagenavi plugin */
            if (function_exists('wp_pagenavi'))
            {
                echo "<br />";
                wp_pagenavi( array( 'query' => $query ) );
            }
        ?>
    </div>

<div id="prasti"><span class="prase">PROBLEM HERE</span><span class="praso"><?php echo $query->found_posts; ?></span><span class="prasif">NEEDS</span><span class="prasi">CHANGE</span></div>

    <?php
}
else
{
    echo "There are no results for your selected criteria.";
}
?>
1
Joanna Mikalai

Wie kann ich die statische Gesamtzahl der Beiträge ermitteln, die sich nicht ändern, unabhängig davon, was der Benutzer filtert?

Möglicherweise suchen Sie nach wp_count_posts(): Codex: WP COUNT POSTS

Beispiel für das Abrufen der Anzahl aller veröffentlichten Beiträge:

function get_all_them_posts(){
    $count_posts = wp_count_posts();

    $published_posts = $count_posts->publish;
    return $published_posts;
}

In Vorlage:

 <?php echo get_all_them_posts(); ?>

Für benutzerdefinierten Beitragstyp:

Functions.php:

function get_all_them_cpt_posts(){
    $post_type = 'your_post_type_slug_here';
    $count_posts = wp_count_posts( $post_type );

    $published_posts = $count_posts->publish;
    return $published_posts;
}

In Vorlage:

 <?php echo get_all_them_cpt_posts(); ?>

Wie von Sam und in dieser älteren WPSE-Antwort angegeben, bezieht sich $found_posts auf das, was die Abfrage enthält. $post_count bezieht sich auf die Anzeige (häufig die im Parameter posts_per_page festgelegte Zahl). Ich denke, wp_count_posts() ist das, wonach Sie suchen.


Für Ihren aktualisierten Code

(CPT-Version oben) Okay, es wäre besser, den ersten Codeblock zur functions.php Ihres Themes hinzuzufügen (oder ein untergeordnetes Thema, wenn Sie eines verwenden). Diese:

function get_all_them_posts(){
    $count_posts = wp_count_posts();

    $published_posts = $count_posts->publish;
    return $published_posts;
}

Wenn Sie dann die Gesamtzahl der Beiträge in der Vorlage haben möchten, ersetzen Sie Folgendes:

<?php echo $query->found_posts; ?> 

Mit:

<?php echo get_all_them_posts(); ?>

Diese Zeile ruft die zu functions.php hinzugefügte Funktion auf. Auf diese Weise können Sie sie in anderen Vorlagendateien verwenden, ohne diese Funktion jedes Mal neu schreiben zu müssen. Ich hoffe das hilft!

2
hwl

$ Wp_query -> $ found_posts ändert sich, sobald Sie gefiltert haben, da das Plugin möglicherweise die Abfrage ändert, sodass found_post sich jedes Mal ändert.

$wp_query->$post_count
// The number of posts being displayed.
$wp_query->$found_posts
// The total number of posts found matching the current query parameters

// Total post amount in database
$count_posts = wp_count_posts();
// Total post amount in database of custom post type called cars
// $count_posts = wp_count_posts('cars');
// Total count of the published amount of above
$published_posts = $count_posts->publish;

Ihr Code unten sollte sein

if ( $query->have_posts() )
{
    ?>
<ul id="florefs">
    <?php
    while ($query->have_posts())
    {
        $query->the_post();

        ?>

        <li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><i class="x-icon florex x-icon-angle-right" data-x-icon="" aria-hidden="true"></i>&nbsp;<?php the_field('br_name'); ?></a>
        <div id="flosex"><span class="fimi"><?php the_field('br_category'); ?></span><span class="flag <?php echo strtolower(get_field('br_heritage')); ?>"></span><span class="fama"><?php the_field('br_heritage'); ?></span></div></li>

        <?php
    }
    ?>
</ul>
    <div class="filhead">Page <?php echo $query->query['paged']; ?> of <?php echo $query->max_num_pages; ?></div>

    <div class="pagination">

        <div class="nav-next"><?php previous_posts_link( '<i class="x-icon x-icon-arrow-left" data-x-icon="" aria-hidden="true"></i> Previous page' ); ?></div>
        <div class="nav-previous"><?php next_posts_link( 'Next page <i class="x-icon x-icon-arrow-right" data-x-icon="" aria-hidden="true"></i>', $query->max_num_pages ); ?></div>

        <?php
            /* example code for using the wp_pagenavi plugin */
            if (function_exists('wp_pagenavi'))
            {
                echo "<br />";
                wp_pagenavi( array( 'query' => $query ) );
            }
        ?>
    </div>

<div id="prasti"><span class="prase">PROBLEM HERE</span><span class="praso"><?php echo wp_count_posts(); ?></span><span class="prasif">NEEDS</span><span class="prasi">CHANGE</span></div>

    <?php
}
else
{
    echo "There are no results for your selected criteria.";
}
?>
0
Sam