TAX_QUERY术语ID正在使用变量

时间:2017-01-17 作者:Alex Costa

我想使用自定义分类术语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?

2 个回复
最合适的回答,由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);

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post