统计当月发帖数

时间:2013-02-27 作者:David Garcia

我试图从所有类别中反映本月的帖子数量,但它不起作用。

<?php
$month = date(\'m\');
$year = date(\'Y\');
$countposts = get_posts(\'post_type=post&year=\' . $year . \'&monthnum=\' . $month . \'&cat=3\');
echo \'New posts \'  . count($countposts);
?>
类别3是父类别,有许多子类别。无论我做什么,它都返回值5。我本月发布了30篇帖子来测试它,但不包括在内(

我做错了什么?

Update 我尝试了以下查询并返回了相同的输出

    <?php
wp_reset_postdata();
$current_year = date(\'Y\');
$current_month = date(\'m\');
$args = array(
    \'cat\'      => 3,
    \'year\'     => $current_year,
    \'monthnum\' => $current_month,
    \'post_status\'     => \'publish\',
    \'post_type\'       => \'post\'
);
$number_posts = get_posts( $args );
echo \'New posts \'  . count($number_posts);
?>

2 个回复
SO网友:Sunyatasattva

这是因为参数posts_per_pageget_posts() 作用defaults to 5. 在您的$args.

SO网友:Krzysiek Dróżdż

我不会用get_posts 用于统计帖子的函数。

它会选择这些帖子,可能会有大量数据,您将从数据库中传输/读取,而不会使用这些数据。

另一个问题是get_posts 是一个非常复杂的函数。看看吧get_posts 中的实现wp-includes/query.php 文件并检查它执行了多少操作。因此,这并不是统计职位的非常有效的解决方案。

因此,我将使用自定义SQL查询。这样会更有效率。您可以使用此功能:

function my_count_posts_from_month($year, $month) {
    global $wpdb;

    $query = "SELECT count(ID) FROM {$wpdb->posts} WHERE post_type=\'post\' AND post_status=\'publish\' AND YEAR(post_date)=%d AND MONTH(post_date)=%d";    

    return $wpdb->get_var( $wpdb->prepare( $query, $year, $month ));
}

结束

相关推荐

在WP_QUERY中为自定义分类设置POSTS_PER_PAGE

我使用下面的代码获取自定义分类术语下的所有页面,它显示了所有页面。我想要的是限制这一点,并且只说出在自定义分类法下发布的最后两页。posts\\u per\\u page=1在此处不起作用并显示所有页面。<?php $post_type = \'page\'; // Get all the taxonomies for this post type $taxonomies = get_object_taxonomies( (object) array( \'post