不能通过将带逗号的字符串传递到array()
, 这不是PHP中数组的工作方式。您的代码等效于:
if ( in_category( array( \'1,2,3,4\' ) ) ) {
}
正在检查ID为的单个类别
\'1,2,3,4\'
, 这是不可能存在的。
对于要执行的操作,函数需要返回一个ID数组,该数组将直接传递到in_category()
, 没有array()
:
function get_cats(){
$id = 1;
$tax = \'category\';
$children = get_term_children( $id, $tax );
$cats = array(); // Prepare an array to return.
foreach ( $children as $child ) {
$term = get_term_by( \'id\', $child, $tax );
$cats[] = $term->term_id; // Add ID to the array:
}
return $cats; // Return the array.
}
然后:
if ( in_category( get_cats() ) ) {
//
}
然而,需要指出的是
get_cats()
功能极其冗余。您正在使用
get_term_children()
获取孩子的ID,但出于某种原因,您正在循环这些ID以获取完整的学期,这样您就可以获取ID。这没有意义,因为您已经有了ID。
所以真的,你不需要get_cats()
根本不起作用。仅使用get_term_children()
:
$term_ids = get_term_children( 1, \'category\' );
if ( in_category( $term_ids ) ) {
}