自定义帖子类型的输出术语

时间:2017-05-30 作者:Roshan Deshapriya

我能够使用以下代码呼出属于自定义分类法的所有术语:

$args = array(\'post_type\' => \'my_post_type\',\'number\' => \'999\');
$terms = get_terms( \'my_taxo\',
          [
            \'hide_empty\' => true,
            \'orderby\' => \'wpse_last_word\',
          ] , $args );

foreach ( $terms as $term ) { 
    echo \'\' . $term->name . \'\'; 
}
这段代码提供了我希望在本地主机(xampp)上获得的结果。基本上,它输出分配给特定职位的所有术语。但是,当我将代码上传到实时服务器时,代码不再像预期的那样工作。相反,它显示所有术语而不过滤它们。我甚至将live server上的PHP版本更新为本地服务器;还是没有运气。

有人能指出我代码中的问题吗。

2 个回复
最合适的回答,由SO网友:CodeMascot 整理而成

您的代码错误。我不知道它在您的本地主机中是如何工作的。原因-

您正在呼叫get_terms() 有3个参数,实际接受2个参数。最后一个是额外的get_terms() 返回分类法的所有术语,而不是与帖子关联的术语获取您可以使用的帖子的相关术语wp_get_post_terms.

Usage of wp_get_post_terms inside WordPress loop-

对于每个帖子,您都可以通过致电wp_get_post_terms 如下所示-

//Do something if a specific array value exists within a post
$term_list = wp_get_post_terms($post->ID, \'your_taxonomy\', array("fields" => "all"));
// Then you can run a foreach loop to show the taxonomy terms infront.
foreach($term_list as $term_single) {
    echo $term_single->slug; //do something here
}
对于环路外部-

// Do something if a specific array value exists within a post
// And somehow you need to get the post ID to pas it to below.
$term_list = wp_get_post_terms($post_id, \'your_taxonomy\', array("fields" => "all"));
// Then you can run a foreach loop to show the taxonomy terms infront.
foreach($term_list as $term_single) {
    echo $term_single->slug; //do something here
}
希望这有帮助。

SO网友:Roshan Deshapriya

经过几次研究,我发现下面的脚本可以完成这项工作,感谢@U剧作家给我指出了一个正确的方向,我使用了global$post,但方式不正确

global $post;
$loop = new WP_Query(array(\'post_type\' => \'myCPT\', \'posts_per_page\' => -1));
while ($loop->have_posts()) : $loop->the_post();
$terms = wp_get_post_terms($post->ID, \'my_taxonomy\');                   
foreach($terms as $term_single) {
echo \'\' . $term_single->slug. \'\';
}
endwhile;

如果有人在这之后得到空结果,只需删除类别并重新创建和应用它们。

结束

相关推荐

Custom taxonomy Rewrite Rule

我希望我的分类url如下:site。com/page/taxonomy\\u术语我如何才能做到这一点?我在函数中编写了wordpress重写规则代码。php如下所示:function sphere_custom_rewrite_rules( $rules ){ $newrules[\'(.+?)/([^/]*)/?\'] = \'index.php?pagename=$matches[1]&positive_sphere=$matches[2]\'; $newrul