如何在自定义帖子类型中获取帖子类别

joh*_*ith 0 php wordpress custom-post-type

我有一个名为“football_teams”的自定义帖子类型,它有 20 个帖子。

// WP_Query arguments
$args = array(
    'post_type'              =>  'football_teams',
    'posts_per_page'         =>  '-1'
);

// The Query
$query = new WP_Query( $args );
Run Code Online (Sandbox Code Playgroud)

我如何获得 CPT 中所有这些帖子的类别。

我试过了,$cats = get_categories();但它显示了所有帖子的所有类别。

我也试过$cats = get_categories($args);但没有奏效。

任何帮助将不胜感激,我是网络开发的新手。

小智 6

您可以简单地使用get_the_terms()函数来获取术语(类别)名称。您可以使用下面的代码。注意:这$taxonomy是您的自定义分类法。如果您不使用自定义分类法,那么它将是category.

<?php

$post_type = 'your post type';
$taxonomy = 'your taxonomy';

$args = [
    'post_type' => $post_type,
    'posts_per_page' => -1
];

$query = new WP_Query($args);

if( $query->have_posts() ) {

    while( $query->have_posts() ) {
        $query->the_post();

        $terms = get_the_terms($post->ID, $taxonomy);
        $categories = [];

        if( $terms ) {          
            foreach ($terms as $category) {
                $categories[] = $category->name;
            }       
        }

        $categories = implode(', ', $categories);

        echo get_the_title() .'| '. $categories .' <br>';
    }
}


Sample output:
my post 1 | category1, category2, category3
my post 2 | category2, category4, category5
Run Code Online (Sandbox Code Playgroud)