我想使用自定义分类术语ID进行自定义WP\\U查询。
术语ID示例:19,18214226,20
为什么会这样:
$query_args = array (
\'post_type\' => \'works’,
\'tax_query\' => array(
array(
\'taxonomy\' => \'materials\',
\'field\' => \'term_id\',
\'terms\' => array( 19,18,214,226,20 ),
)
),
);
它显示所有分类术语ID中的所有项,
但事实并非如此:
$tax = \'19,18,214,226,20\';
$query_args = array (
\'post_type\' => \'works\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'materials\',
\'field\' => \'term_id\',
\'terms\' => array( $tax ),
)
),
);
使用变量
$tax
查询结果仅显示第一个术语ID(19)的项,而忽略所有其他项。
为什么会发生这种情况?如何在tax\\u查询中使用变量,而不是硬编码ID?
最合适的回答,由SO网友:Pedro Coitinho 整理而成
看起来您正在创建一个包含单个字符串的数组。
检查在传递前将$tax放入数组是否有效:
$tax = array( 19, 18, 214, 226, 20 );
$query_args = array (
\'post_type\' => \'works\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'materials\',
\'field\' => \'term_id\',
\'terms\' => $tax,
)
),
);
如果需要从格式化字符串生成数组,可以使用
explode
PHP函数,它接受一个分隔符和一个字符串,并返回一个数组,如下所示:
$tax_string = \'19,18,214,226,20\';
$tax_array = explode( \',\', $tax_string );
希望这样行!
SO网友:codiiv
因为在php中,$tax = \'19,18,214,226,20\';
是字符串。而且你不能在array()
并创建一个数组:)
您可能需要以下内容:
function comma_separated_to_array($string, $separator = \',\')
{
//Explode on comma
$vals = explode($separator, $string);
//Trim whitespace
foreach($vals as $key => $val) {
$vals[$key] = trim($val);
}
//Return empty array if no items found
//http://php.net/manual/en/function.explode.php#114273
return array_diff($vals, array(""));
}
并将其用作
$terms= comma_separated_to_array($tax);