我之前问过一个相关的问题,但我想我终于找到了问题的症结所在。
我正在使用Advanced Custom Fields 并将许多自定义字段附加到我的帖子类型。我正在尝试更改URL以通过自定义字段和值接收帖子。
我真的很接近了。这是我的functions.php:
add_action(\'pre_get_posts\', \'my_pre_get_posts\');
function my_pre_get_posts( $query ) {
if( is_admin() ) { return; }
$meta_query = $query->get(\'meta_query\'); // get original meta query
if( isset($_GET[\'type\']) ) {
$type = \'"\' . $_GET[\'type\'] . \'"\';
$meta_query[] = array(
\'key\' => \'type\',
\'value\' => $type,
\'compare\' => \'LIKE\',
);
}
$query->set(\'meta_query\', $meta_query); // update the meta query args
return; // always return
}
现在,因为ACF在处理自定义字段中的多个值时使用序列化数组,所以我使用
LIKE
查询这个
type
自定义字段实际上接受多个值,我可以按一个值显示帖子
type
(即:女性)成功。
网站com?类型=女性
但在尝试检索多个type
s(即:女性、男性、男孩),这不起作用。
网站com?类型=女性、男性、男孩
现在我意识到我在这里使用的是序列化数组,如果我想让它查询多个type
\'我得把它炸了$type
变量,但这似乎也不起作用。
如果有人能帮忙,我迫切需要一个解决方案。谢谢
EDIT | Multiple times for each type:
$meta_query[] = array(
\'relation\' => \'OR\',
array(
\'key\' => \'type\',
\'value\' => \'men\',
),
array(
\'key\' => \'type\',
\'value\' => \'women\',
),
array(
\'key\' => \'type\',
\'value\' => \'boys\',
),
);