按meta_key值对搜索结果进行排序

时间:2016-03-28 13:48:57

标签: php wordpress search

我真的需要帮助。下面是搜索结果search.php的wp页面模板的代码,一切正常。现在,该网站是关于公共活动的,因此按事件日期显示搜索结果非常重要。我创建了一个名为" date"的自定义字段。我希望通过" date"显示结果。字段值。

我花了整整一个星期才找到解决方案,但遗憾的是我无法解决问题。请帮帮我:)

这是一段代码:

<?php
    global $query_string;
    $query_args = explode("&", $query_string);
    $search_query = array();
    if( strlen($query_string) > 0 ) {
        foreach($query_args as $key => $string) {
            $query_split = explode("=", $string);
            $search_query[$query_split[0]] = urldecode($query_split[1]);
        }
    }
    $search = new WP_Query($search_query);
?>

<?php if ($search->have_posts()) : while ($search->have_posts() ) : $search->the_post(); ?>

    <!-- loop goes here -->

<?php endwhile; else: ?>

<?php endif; ?>

谢谢!!!!

1 个答案:

答案 0 :(得分:0)

我会尝试别的东西:

functions.phpmy-plugin.php

add_filter( 'pre_get_posts', 'customize_search_page' );

function customize_search_page($query){

    if(!is_admin() && $query->is_search && $query->is_main_query()){
        $query->query_vars['meta_key'] = 'your_meta_key';
        $query->query_vars['orderby'] = 'meta_value';
        $query->query_vars['order'] = 'DESC';
    }
    return $query;
}

我没有测试过它,但是在循环之前会调用pre_get_posts过滤器。如果这是正确的查询(搜索和主要),我将orderby更改为按元值排序。