根据您的代码,如果url为:
http://example.com/page/?eth=1&t=1
然后,生成的查询将是:
$tax_query_args = array(
\'relation\' => \'OR\',
array(
\'taxonomy\' => \'filters\',
\'field\' => \'slug\',
\'terms\' => array( \'\', \'twitter\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\' ),
\'operator\' => \'IN\'
),
array(
\'taxonomy\' => \'platform\',
\'field\' => \'slug\',
\'terms\' => array ( \'ethereum\', \'\', \'\', \'\', \'\', \'\'),
\'operator\' => \'IN\'
),
);
虽然空变量有点混乱,WordPress会忽略它们。所以实际上你只是在查询有“推特”的帖子
filter
或“以太坊”
platform
. 因此,如果这是您想要的,那么代码就可以了。
如果不起作用,则可能是slug或分类名称不正确,或者您使用的查询有其他问题$tax_query_args
在里面如果看不到更多,就不可能说,但你这里的一切都很好。
综上所述,我想建议一种更干净的方法来解决这个问题。
您提到了复选框,并且基于您对$_GET
我假设您的表单如下所示:
<input name="t" value="1" type="checkbox">
<input name="f" value="1" type="checkbox">
<input name="eth" value="1" type="checkbox">
<input name="neo" value="1" type="checkbox">
这样做意味着您需要大量代码来确定选择了哪些分类术语。
我建议您将表单更改为这样:
<input name="filter[]" value="twitter" type="checkbox">
<input name="filter[]" value="facebook" type="checkbox">
<input name="platform[]" value="ethereum" type="checkbox">
<input name="platform[]" value="neo" type="checkbox">
现在,要查询正确的分类术语,只需执行以下操作:
$filters = isset( $_GET[\'filters\'] ) ? $_GET[\'filters\'] : array();
$platform = isset( $_GET[\'platform\'] ) ? $_GET[\'platform\'] : array();
$tax_query_args = array(
\'relation\' => \'OR\',
array(
\'taxonomy\' => \'filters\',
\'field\' => \'slug\',
\'terms\' => $filters,
\'operator\' => \'IN\'
),
array(
\'taxonomy\' => \'platform\',
\'field\' => \'slug\',
\'terms\' => $platform,
\'operator\' => \'IN\'
),
);