0

我正在尝试以某种方式自定义 search.php,以便它还可以显示在元键值中具有搜索关键字的帖子。请注意:我正在使用使用元键的高级自定义字段插件。

例如,我有一个名为“治疗”的元键,如果用户在搜索栏中输入“我的治疗”并点击搜索按钮,我想显示具有“我的治疗”关键字其内容的帖子和/或具有“我的治疗”在其称为“治疗”的元键中。

我想同时使用多个元键,例如“地址”。我编写了以下代码,但它只是破坏了搜索。谁能告诉我我做错了什么。

$args = array(
        'post_type'=> 'beauty_salon',
        's' =>$s,
        'meta_query' => array(
               array(
                  'key' => 'treatments',
                  'value' => $s,
                  'compare' => 'LIKE',
                ),
                array(
                  'key' => 'address',
                  'value' => $s,
                  'compare' => 'LIKE',
                ),
        ),
    );
    $query = new WP_Query( $args );

    // The Loop.......etc

请注意:我需要简短的自定义代码,所以请不要推荐插件。我知道有很多人可以这样做。

4

1 回答 1

0

Try using the 'relation' option for meta_query.

Also I suggest for you to use the pre_get_posts fiter to "hack" into the search query if you are using the actual search.php template to display the search items so you would write in your functions.php instead of the template file something like this:

function search_filter($query) {
    if ( !is_admin() && $query->is_main_query() ) {
        if ($query->is_search) {
            $meta_args = array(
                'relation' => 'OR',
                array(
                    'key' => 'treatments',
                    'value' => $s,
                    'compare' => 'LIKE',
                ),
                array(
                    'key' => 'address',
                    'value' => $s,
                    'compare' => 'LIKE',
                ),
            );

            $query->set('post_type', 'beauty_salon');
            $query->set('meta_query', $meta_args);
        }
    }
}

add_action('pre_get_posts','search_filter');
于 2013-07-31T10:32:19.173 回答