按元关键字值对搜索结果进行排序(_K)


Sort search results by meta_key value

我真的需要帮助。下面是我的搜索结果的wp页面模板search.php的代码,一切都很好。现在,该网站是关于公共活动的,所以按活动日期显示搜索结果非常重要。我创建了一个名为"日期"的自定义字段,我想按"日期"字段值显示结果。

我花了整整一周的时间寻找解决方案,但不幸的是,我没能找到。请帮帮我:)

这是一个代码:

<?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; ?>

谢谢!!!!

我会尝试其他东西:

在您的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更改为按元值排序。