You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计自定义分类法Actor下各演员的参演Movie数量?

解决演员参演电影数量统计的问题

Hey there! Let's get this sorted for you—since you're already using a custom post type movie and custom taxonomy actor, we're just a few lines of code away from showing each actor's movie count correctly.

方法一:利用get_terms直接获取关联数量(高效首选)

WordPress的get_terms函数可以直接返回每个分类(这里就是演员)关联的文章数量,我们只需要限定它只统计movie类型的文章就行:

// 获取所有演员分类,仅关联movie类型文章
$actors = get_terms(array(
    'taxonomy' => 'actor',
    'hide_empty' => false, // 设为true则只显示有参演电影的演员
    'object_ids' => get_posts(array(
        'post_type' => 'movie',
        'posts_per_page' => -1,
        'fields' => 'ids' // 只获取文章ID,提升性能
    ))
));

// 循环输出演员和对应的电影数量
if (!empty($actors) && !is_wp_error($actors)) {
    echo '<ul class="actor-movie-counts">';
    foreach ($actors as $actor) {
        echo '<li>' . esc_html($actor->name) . ' - 参演电影:' . esc_html($actor->count) . ' 部</li>';
    }
    echo '</ul>';
}

关键说明:

  • object_ids参数限定了只统计movie类型的文章,避免把其他文章类型的关联也算进去
  • hide_empty控制是否显示没有参演任何电影的演员,根据你的需求调整

方法二:用WP_Query单独查询每个演员的电影数(灵活进阶)

如果需要更复杂的筛选逻辑(比如排除草稿状态的电影、按年份过滤等),可以对每个演员单独发起查询:

// 获取所有演员分类
$actors = get_terms(array(
    'taxonomy' => 'actor',
    'hide_empty' => false
));

if (!empty($actors) && !is_wp_error($actors)) {
    echo '<ul class="actor-movie-counts">';
    foreach ($actors as $actor) {
        // 查询该演员参演的所有movie
        $movie_query = new WP_Query(array(
            'post_type' => 'movie',
            'post_status' => 'publish', // 只统计已发布的电影
            'tax_query' => array(
                array(
                    'taxonomy' => 'actor',
                    'field' => 'term_id',
                    'terms' => $actor->term_id
                )
            ),
            'posts_per_page' => -1,
            'fields' => 'ids' // 只取ID,提升性能
        ));

        // 输出结果
        echo '<li>' . esc_html($actor->name) . ' - 参演电影:' . esc_html($movie_query->found_posts) . ' 部</li>';
        wp_reset_postdata(); // 重置查询,避免影响后续内容
    }
    echo '</ul>';
}

先确认一个关键前提!

要确保你的自定义分类法actor在注册时已经和movie类型关联,否则统计会出错。注册代码应该类似这样:

function register_movie_and_actor() {
    // 注册movie自定义文章类型
    register_post_type('movie', array(
        'label' => '电影',
        'public' => true,
        'has_archive' => true,
        // 其他参数...
    ));

    // 注册actor自定义分类法,关联movie
    register_taxonomy('actor', 'movie', array(
        'label' => '演员',
        'public' => true,
        'rewrite' => array('slug' => 'actor'),
        // 其他参数...
    ));
}
add_action('init', 'register_movie_and_actor');

如果之前注册分类法时没指定object_type为movie,赶紧补上,否则分类和文章类型之间没有关联,统计自然不会正确~

希望这些方法能帮你搞定问题!如果还有细节需要调整,随时说。

内容的提问来源于stack exchange,提问作者scottiescotsman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:10:46