web-dev-qa-db-ja.com

総投稿数を問い合わせる

検索フィルタープラグインを使用する。データベースに存在する投稿の総数を取得するために使用しています

 $wp_query->found_posts

ただし、ユーザーがページ上の結果をフィルター処理すると、この数はフィルターに表示される投稿数に応じて変わります。

ユーザーが何をフィルタリングしても変化しない静的な投稿総数を取得する方法を教えてください。


更新:これは私の完全なテンプレートコードです。私は以下の答えを試しましたが、私のテンプレートではうまくいきませんでした。何か案は?

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

ユーザーが何をフィルタリングしても変化しない静的な投稿総数を取得する方法を教えてください。

wp_count_posts()Codex:WP COUNT POSTS を探しているのかもしれません - /

全投稿数の取得例:

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

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

テンプレート内:

 <?php echo get_all_them_posts(); ?>

カスタム投稿タイプの場合:

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;
}

テンプレート内:

 <?php echo get_all_them_cpt_posts(); ?>

Sam および で示されているように、この古いWPSE回答 で、$found_postsはクエリが保持しているものを参照しています。 $post_countは、表示されているものを参照しています(多くの場合、posts_per_pageパラメータに設定されている数値)。私はwp_count_posts()があなたが探しているものだと思います。


更新されたコードについて

(上のCPTバージョン)さて、それはあなたのテーマ(もしあなたがそれを使っているならば子テーマ)のfunctions.phpに最初のコードブロックを追加することが良いでしょう。この:

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

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

次に、テンプレート内の総投稿数を表示したい場所で、次のように置き換えます。

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

と:

<?php echo get_all_them_posts(); ?>

その行はfunctions.phpに追加された関数を呼び出すでしょう。そのようにすることで、毎回その関数を書き直すことなく他のテンプレートファイルでそれを使うことができます。私はそれが役立つことを願っています!

2
hwl

プラグインによってクエリが変更される可能性があるため、$ wp_query - > $ found_postsはフィルタを適用すると変更されるため、毎回found_postが変更されます。

$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;

下記のコードは

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