将WordPress搜索扩展到自定义字段

时间:2018-02-12 13:31:44

标签: wordpress

我想将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也不起作用。我的第一次测试中有一些错误的数据。

0 个答案:

没有答案