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