我想将WordPress搜索query_var扩展到我的自定义字段以获取自定义帖子类型。我有两个自定义字段,一个用于工作日(有效),另一个用于课程文本。搜索query_var's'也应在此课程 - 文本字段中搜索。我已经实施了:
function my_search_query( $query ) {
if ( !is_admin() && $query->is_search && is_post_type_archive( 'course' ) ) {
if (!empty($query->query_vars['weekday'][0])){
$query->set('meta_query', array(
array (
'key' => 'course_weekday',
'value' => $query->query_vars['weekday'][0],
'compare' => '='
)
));
}
if (!empty($query->query_vars['s'])){
$query->set('meta_query', array(
'relation' => 'OR',
array (
'key' => 'course_text',
'value' => $query->query_vars['s'],
'compare' => 'LIKE'
),
));
}
}
}
add_filter( 'pre_get_posts', 'my_search_query');
第二个应该将's'query_var附加到搜索innside course_text元字段。
更新:我已将pre_get_posts更改为
function my_search_query( $query ) {
if ( !is_admin() && $query->is_search && is_post_type_archive( 'course' ) ) {
if (!empty($query->query_vars['weekday'][0])){
$query->set('meta_query', array(
array (
'key' => 'course_weekday',
'value' => $query->query_vars['weekday'][0],
'compare' => '='
)
));
}
}
}
add_filter( 'pre_get_posts', 'my_search_query');
然后我将其添加到archive-course.php(我的搜索表单在哪里):
<?php
global $wp_query;
$args = array_merge( $wp_query->query_vars,
array(
'relation' => 'OR',
array (
'key' => 'course_text',
'value' => get_query_var('s'),
'compare' => 'LIKE',
)
) );
query_posts( $args );
?>
通过这种方式它起作用。现在WP通过query_var的'。
在Custom-Post标题中搜索OR或在course_text中搜索更新2:不抱歉,解决方案2也不起作用。我的第一次测试中有一些错误的数据。