如何在HAVE_POST循环中检索帖子的类别?

时间:2019-04-05 作者:Abdullah Raihan Bhuiyan

我使用的是CPT(post\\u type=>“portfolio\\u type”,taxonomy=>“portfolio\\u cat”)。在这个CPT下,我有设计、web开发类。我正在尝试获得该类别的帖子。我尽了最大努力,

function callback_for_portfolio_shortcode(){
    $args[\'tax_query\'] = array(
        array(
            \'taxonomy\' => \'portfolio\',
            \'field\' => \'id\',
            \'terms\' => $parent_cat
        )
    );
    $query = new WP_Query($args);
    if ($query->have_posts()) :
        while ($query->have_posts()): $query->the_post();
            $post_id = get_the_ID();
            $post_categories = wp_get_post_categories( $post_id );
            $cat_str = \'\';

            //loop through the category and get a string of category
            foreach($post_categories as $c){
                $cat = get_category( $c );
                $cat_str .= $cat->name;
            }
            $html .= \'<h4>\'.$query->post->post_title.\'</h4>\'; //works fine 
            $html .= \'<h4>\'.substr(get_field(\'job_description\', $id), 0, 100).\'</h4>\'; //works fine 
            $html .= \'<h4>\'.post_permalink().\'</h4>\'; //works fine 
            $html .= \'<h4>\'.$cat_str.\'</h4>\'; //does not work    
        endwhile;
    endif;
    return $html;
}
$cat\\u str为空。我错过了什么?谢谢

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

wp_get_post_categories()get_category() 专门针对category 分类学您正在使用自定义分类法,portfolio_cat, 所以你需要使用get_the_terms() 获取类别。

$categories = get_the_terms( $post_id, \'portfolio_cat\' );
$cat_str    = \'\';

foreach ( $post_categories as $category ) {
    $cat_str .= $category->name;
}
如果您只需要以逗号分隔的类别链接列表,可以使用get_the_term_list() 要简化代码,请执行以下操作:

$cat_str = get_the_term_list( $post_id, \'portfolio_cat\', \'\', \', \', \'\' );
或者,如果您不需要链接,可以这样做:

$categories = get_the_terms( $post_id, \'portfolio_cat\' );
$cat_str    = implode( \', \', wp_list_pluck( $categories, \'name\' ) );
此外,代替$query->post->post_title 你真的应该get_the_title();.

相关推荐

Shortcode based chart plugin

有谁知道一个WP插件可以根据短代码参数生成图表吗?i、 e.像这样的[chart type=\"bar\" values=\"1,2,4,7,3\"], [chart type=\"pie\" values=\"43,32,38\"] 所以不需要上传。txt/。csv文件,使用谷歌工作表等。谢谢PS:由于我们网站的工作方式(数据库生成一些内容),我们需要基于短代码。