我在尝试在前端显示某些类别的帖子时遇到了一个小问题。我已经创建了一个自定义字段,其关键是“相关的\\u类别”,我有不同的SLUG类别,如“陆军”、“海军”、“空军”等。
创建新的自定义帖子时,我在“related\\u categories”自定义字段中输入不同类别的slug,例如“navy”、“airforce”,这是我在模板文件中的代码,用于响应“tax\\u query”数组中的自定义字段值。
<?php global $post;
$related = array ( get_post_meta($post->ID, \'related_categories\', true) );
$the_query = new WP_Query( array( \'post_type\' => \'medals\', \'posts_per_page\' => 3, \'tax_query\' => array( array( \'taxonomy\' => \'medal-categories\', \'field\' => \'slug\', \'terms\' => $related, ), ), ) );
while ( $the_query->have_posts() ) : $the_query->the_post();
//loop starts after this
现在,我面临的问题是,如果我在“related\\u categories”自定义字段(例如“navy”)中只输入一个slug,那么来自“navy”类别的帖子就会成功显示,但如果我在“related\\u categories”自定义字段(例如“navy”、“army”)中输入多个slug,那么帖子就不会显示。
我尝试在互联网上搜索解决方案,但找不到任何解决方案,因此,如果有任何帮助,我将不胜感激。非常感谢。
最合适的回答,由SO网友:cybmeta 整理而成
问题是您传递的是一个以逗号分隔的术语列表,而不是一个术语数组。例如,如果在自定义字段中输入“陆军、海军、空军”:
$related = array ( get_post_meta($post->ID, \'related_categories\', true) );
//$related = array(\'army,navy,airforce\');
//What you need is
//$related = array(\'army\',\'navy,\'airforce\');
您需要将每个术语转换为数组成员,例如使用
explode:
$related = explode(\',\', trim( get_post_meta($post->ID, \'related_categories\', true) ) );
无论如何,我认为你应该用另一种方式来实现你的目标。在我看来,使用自定义字段手动存储相关类别的列表是不合适的。例如,您可以创建层次分类法并在同一父项下设置相关类别,或者使用核心标记分类法来设置关系等,我认为这比使用自定义字段存储一组分类法术语更好、更“自然”。