我正在尝试使用pre\\u get\\u posts挂钩将WordPress的搜索功能替换为我自己的搜索功能,因此我想取消设置$query->;query\\u vars[\'s\',这样它就不会限制结果,但我想将\'s\'保留为$query的属性,这样我就可以使用get\\u search\\u query函数。我该怎么做呢?
add_action(\'pre_get_posts\', function (\\WP_Query $query) {
if (!$query->is_search()) {
return;
}
if (is_admin()) {
return;
}
$q = get_search_query();
if (!$q) {
return;
}
$search_parameters = array("q" => $q);
$search_parameters = apply_filters(\'custom_search_parameters\', $search_parameters);
$search_results = custom_search($search_parameters);
if ($search_results) {
unset($query->query_vars[\'s\']); // This causes get_search_query() to no longer work, but omitting it restricts the results.
$query->query_vars[\'post__in\'] = $search_results[\'post_ids\'];
$query->query_vars[\'orderby\'] = \'post__in\';
$query = apply_filters(\'custom_search_query\', $query);
}
});