我试图突出显示与当前类别页面属于同一类别的列表项。
例如,我有一个名为“食物”的类别,其子类别为:“早餐”、“午餐”和“晚餐”。如果导航到子类别“午餐”(在调用所有帖子的循环中,无论类别如何),我希望突出显示与午餐相关的所有列表项。
首先,我使用get_category
和->term_id
定义当前所在类别的ID。其次,在循环中,我使用get_the_category
和[0]->cat_ID
检索每个列表项的ID(但仅检索数组中的第一个)。最后,我使用in_array
查看两个参数之间是否匹配,如果匹配,则返回一个值。
我的问题在于$categories[0]->cat_ID
. 如果列表项与多个类别关联,则仅检索数组中的第一个类别是不好的。
如何创建一个参数来输出与循环中列表项关联的所有类别ID?
<?php
$thisTrueCat = get_category( get_query_var( \'cat\' ) );
?>
<!-- loop start -->
<?php
$categories = get_the_category();
$categories_id = $categories[0]->cat_ID;
?>
<?php if( in_array( $thisTrueCat->term_id, array($categories_id) ) ) { echo \'cat-hi\'; }?>
最合适的回答,由SO网友:TheDeadMedic 整理而成
而不是:
$categories = get_the_category();
$categories_id = $categories[0]->cat_ID;
。。。使用:
$categories = wp_list_pluck( get_the_category(), \'term_id\' );
现在您可以正确使用
in_array
要搜索所有帖子的类别,而不仅仅是第一个类别,请执行以下操作:
if ( in_array( $thisTrueCat->term_id, $categories ) ) { ... }