是否在循环上方显示今天创建的帖子数量?

时间:2017-11-30 作者:Herbo

目前,我使用的是一个非常标准的循环,我想知道如何使它显示这样的内容“Latest Posts (4 today)“它将根据每天发布的特定类别的帖子数量进行更新。

<ul>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>">
    <span class="title"><?php the_title(); ?></span>
</a>
</li>
<?php endwhile; else: ?>

    <p><?php _e(\'Sorry, no posts matched your criteria.\'); ?></p>

<?php endif; ?>
<?php wp_reset_query(); ?>
</ul>

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

我想我已经找到了最有效的方法。棘手的是,您需要查询日期范围内的帖子,以便:

A、 匹配当前查询。如果您正在查看一个类别或标签,那么您希望获得该类别或标签中当天的帖子。

B、 不受当前每页帖子设置的限制。如果你在一天内发布超过一页的帖子,那么这个数字需要反映出来。

您也不需要查询与这些帖子相关的所有帖子数据。你只是在数数。

我想到的解决方案是:

获取当前查询它经过测试,运行良好。

为此,我们可以访问global $wp_query 然后获取$wp_query->query_vars 对于当前查询参数。然后,我们按照上面所述修改参数,并将新参数传递给get_posts(). 然后我们只计算结果。这是一个执行以下操作的函数:

function wpse_287363_get_posts_today_count() {
    global $wp_query;

    // Get query arguments for current main query.
    $args = $wp_query->query_vars;

    // Set new values for relevant arguments.
    $arg_amendments = array(
        \'fields\'     => \'ids\',
        \'nopaging\'   => true,
        \'date_query\' => array(
            array(
                \'after\'     => \'today\',
                \'before\'    => \'tomorrow - 1 second\',
                \'inclusive\' => true,
            ),
        ),
    );

    // Replace relevant arguments in existing arguments with amended arguments.
    $new_args = array_merge( $args, $arg_amendments );

    // Get posts with new arguments.
    $post_ids = get_posts( $new_args );

    // Count results.
    $count = count( $post_ids );

    // Return count.
    return $count;
}
现在您可以使用wpse_287363_get_posts_today_count() 获取当前日期发布的帖子数量,与您正在查看的存档相关。

因此,如果你在分类档案中,它将返回今天在该分类中发表的帖子数量。在标签存档中,它将返回今天在该标签中发表的帖子数。它甚至可以处理日期档案,并显示特定年份/月份今天发布的帖子数量。如果你只是在博客页面上,它会显示今天在任何类别或标签中发表的帖子数量。它甚至可以与自定义的帖子类型/分类归档一起使用。

SO网友:dipak_pusti

您可以使用date_query 要从今天开始获取您的帖子,

  1. pre_get_posts

    function function\\u display\\u posts\\u today($查询){

    if (!is_admin() && $query->is_main_query()) {
    
        $today = getdate();
    
        $query->set(\'date_query\', array(
                array(
                    \'year\'  => $today[\'year\'],
                    \'month\' => $today[\'mon\'],
                    \'day\'   => $today[\'mday\'],
                ),
            )
        )
    }
    
    }add\\u操作(“pre\\u get\\u posts”,“function\\u display\\u posts\\u today”);

    WP\\u查询

$today = getdate();
$args = array(
  \'date_query\' => array(
      array(
          \'year\'  => $today[\'year\'],
          \'month\' => $today[\'mon\'],
          \'day\'   => $today[\'mday\'],
      ),
  ),
);
$query = new WP_Query( $args );
请参见date_query.

更新时间:

要获得帖子数量,只需在上面写一个自定义查询,您的数量将是,

<?php echo $query->post_count; ?>
希望这个有帮助:)

结束

相关推荐

Show the excerpt in a loop

我想用这个循环显示最后3篇文章。这很有效,但我不知道为什么,但摘录总是一样的。我做错了什么? <?php $args = array( \'numberposts\' => \'3\' ); $recent_posts = wp_get_recent_posts( $args ); foreach( $recent_posts as $recent ){ ?> <div class=\"