我有两种自定义的帖子类型。businesses
profiles
共享单个分类法locations
.
当我使用WP Query检索常见帖子时,它会返回常见帖子。这是我正在使用的查询。
$queryargs = array(
\'post_type\' => \'profile\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'ait-locations\',
\'field\' => \'term_id\',
\'terms\' => array( 1071 ),
),
),
);
此查询返回两篇文章。在这之前一切都很好。
BUT 当我使用wordpress搜索做同样的事情时,结果没有找到帖子。
Here 是我在wordpress帖子中使用的URL
?s=&post_type=profile&ait-locations=1071
IF 如果在搜索页面上我尝试
global $wp_query;
然后在返回的搜索页面上回显当前正在执行的查询
array(3) {
["s"]=>
string(0) ""
["post_type"]=>
string(7) "profile"
["ait-locations"]=>
string(4) "1071"
}
SO网友:Tunji
默认情况下,WordPress按关键字搜索。要使用自定义查询变量进行搜索,必须使用query_vars
function wpse250276_register_query_vars( $vars ) {
$vars[] = \'ait-locations\';
return $vars;
}
add_filter( \'query_vars\', \'wpse250276_register_query_vars\' );
那么你需要使用
pre_get_posts
要更改搜索查询并包括自定义分类过滤器,请使用
get_query_var
function wpse250276_pre_get_posts($query) {
if ($query->is_search) {
$tax_query = array();
// add taxonomy query elements
if( !empty( get_query_var( \'ait-locations\' ) ) ){
$tax_query[] = array(
\'taxonomy\' => \'ait-locations\',
\'field\' => \'term_id\',
\'terms\' => array( get_query_var( \'city\' ) ),
);
$query->set( \'tax_query\', $tax_query );
}
}
return $query;
}
add_filter( \'pre_get_posts\',\'wpse250276_pre_get_posts\' );