Php 按meta_键值对搜索结果排序

Php 按meta_键值对搜索结果排序,php,wordpress,search,Php,Wordpress,Search,我真的需要帮助。下面是我的wp页面模板的代码,用于搜索结果search.php,一切正常。现在,这个网站是关于公共事件的,所以按事件日期显示搜索结果是非常重要的。我已经创建了一个名为“date”的自定义字段,我想按“date”字段值显示结果 我花了整整一周的时间来寻找解决方案,但不幸的是我找不到。请帮帮我:) 下面是一个代码: <?php global $query_string; $query_args = explode("&", $query_string);

我真的需要帮助。下面是我的wp页面模板的代码,用于搜索结果
search.php
,一切正常。现在,这个网站是关于公共事件的,所以按事件日期显示搜索结果是非常重要的。我已经创建了一个名为“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; ?>


谢谢

我想试试别的:

functions.php
myplugin.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\u get\u posts
过滤器。如果是正确的查询(搜索和主查询),我将
orderby
更改为orderby meta值。

请发布
$search\u query
的数组。这是自定义发布类型吗?或者你想搜索整个网站?@Mark我想搜索整个网站。非常感谢你的回答,但不幸的是它不起作用。为什么不呢?这应该适用于标准的
if(have_posts()){while(have_posts()){the_post();/*循环在这里*/}
模板。很抱歉,它可以工作。我以前没有注意到您的代码中有一个额外的
。因此,行:
$query->query_vars['meta_key']=>'your_meta_key'应该是这样的:
$query->query_vars['meta_key']='your_meta_key'非常感谢!!!!