获取自定义帖子类型(Wordpress)的每年帖子数量的数组

Posted

技术标签:

【中文标题】获取自定义帖子类型(Wordpress)的每年帖子数量的数组【英文标题】:Get an array of the number of post per year of a custom post type (Wordpress) 【发布时间】:2021-09-20 05:38:05 【问题描述】:

我有一个名为“论文”的自定义帖子类型,为了提供图表,我需要一个包含每年有帖子的帖子数量的数组。

我尝试过使用wp_count_posts(),但它只是给了我帖子类型的总数,而get_archives() 只是静态的,我需要使用特定信息,例如每年的帖子数量。

有人知道怎么做吗?希望你能帮助我。

【问题讨论】:

为此使用 wp_count_posts() 函数。 developer.wordpress.org/reference/functions/wp_count_posts 。还有你所说的“帖子数量数组”是什么意思? 嗨,wp_count_posts() 函数确实为我提供了自定义帖子类型的帖子数量,但我需要该 CPT 每年的帖子数量 如果你想计算成本并且发布数据是数组格式,那么你应该试试这个: $posts = get_posts([ 'post_type' => 'your custom post type', 'post_status' => '全部', 'posts_per_page' => -1 ]); 【参考方案1】:

对于任何一直想知道同样事情的人,我从其他论坛得到它:

我创建了一个基本示例,说明如何实现此结果。

// get all posts from our CPT no matter the status
$posts = get_posts([
    'post_type'      => 'papers', // based on the post type from your qeustion
    'post_status'    => 'all',
    'posts_per_page' => -1
]);

// will contain all posts count by year
// every year will contain posts count by status (added as extra =])
$posts_per_year = [];

// start looping all our posts
foreach ($posts as $post) 
    // get the post created year
    $post_created_year = get_the_date('Y', $post);

    // check if year exists in our $posts_per_year
    // if it doesn't, add it
    if (!isset($posts_per_year[$post_created_year])) 
        // add the year, add the posts stauts with the initial amount 1 (count)
        $posts_per_year[$post_created_year] = [
            $post->post_status => 1
        ];
    // year already exists, "append" to that year the count
     else 
        // check if stauts already exists in our year
        // if it exist, add + 1 to the count
        if (isset($posts_per_year[$post_created_year][$post->post_status])) 
            $posts_per_year[$post_created_year][$post->post_status] += 1;
        // it doesnt exist, add the post type to the year with the inital amount 1 (count)
         else 
            $posts_per_year[$post_created_year][$post->post_status] = 1;
        
    

在这里获得完整的答案: https://wordpress.stackexchange.com/questions/395928/get-an-array-of-the-number-of-post-per-year-of-a-custom-post-type-wordpress/396047#396047

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:

获取去年发布的帖子

$today = getdate();
$args = array(
    'post_type' => 'post',
    'posts_per_page' => -1,
    'date_query' => array(
        array(
            'year'  => $today['year'] - 1,
        ),
    ),
);
$result = new WP_Query($args);
$count = $result->found_posts;
echo $count;

其他不同的方式

$args = array(
    'type'              => 'yearly',
    'post_type'         => 'post',
    'show_post_count'   => true
);
wp_get_archives($args);

这将输出以下内容 2015 (5) 2014 (3) 2011(10)

【讨论】:

嗨,谢谢你的回答,但这不是我要找的。我需要一个数组来计算我在自定义帖子类型中每年发布的帖子数量。

以上是关于获取自定义帖子类型(Wordpress)的每年帖子数量的数组的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress 如何仅获取自定义帖子类型的父帖子

WordPress:在自定义帖子类型中获取模块名称的帖子 slug

WordPress > 从自定义帖子类型获取自定义分类

Wordpress - 如何通过 slug 获取自定义帖子类型?

Wordpress 自定义帖子类型分类 - 获取特定内容

带有自定义 slug 的 wordpress 自定义帖子类型并获取变量