ACF添加了post meta,因此,您需要使用pre_get_posts 行动具体来说,您需要从$_GET
params并修改查询,添加类似pre_get_posts 文档本质上是这样的:
add_action( \'pre_get_posts\', function(&$query) {
if( is_main_query() && \'\' != $_GET[\'city\'] ) {
$query->set( \'meta_query\', [
[
\'key\' => \'city\',
\'value\' => $_GET[\'city\'],
\'compare\' => \'=\'
]
]);
}
});
请注意,在将输入添加到meta\\u查询之前,还应清理输入。
你必须read the documentation 并且完全理解它。有很多小事会让你失望,比如$query
变量是通过引用传入的(不是函数返回的),因此您所做的任何更改都会实时影响主查询(您不会在操作中返回任何内容,只会在过滤器中返回)。
如果无法实现此功能,您还可以考虑使用posts_clauses
filter 但我不确定这是否是你想要的。
很抱歉延迟响应。我必须做大量的research 并进行测试以确保该答案有效。