Query posts using meta_key

时间:2015-02-24 作者:Joseph Morris

我试图根据meta\\u键的值对结果进行排名。

这是我的表格

<form action="<?php echo home_url(\'/\');?>" method="get" data-javo-patch-form-for-result>
<input type="hidden" name="post_type" value="item">
<input type="hidden" name="location" value="<?php echo $javo_query->get(\'location\');?>" data-javo-sf-location>
<input type="hidden" name="s" data-javo-sf-keyword>
<input type="hidden" name="orderby" value="title">
<input type="hidden" name="order" value="asc">
<input type="hidden" name="meta_key" value="level">
<input type="hidden" name="orderby" value="meta_value_num">
</form>
但它不起作用!如果你有任何建议,请分享。

非常感谢。

1 个回复
最合适的回答,由SO网友:Joseph Morris 整理而成

在摸索了一天半之后,我找到了一个解决办法。

除了表单操作之外,我的主题中没有控制搜索结果的内容,这些操作包括:

<!-- Search Result Page -->
<form action="<?php echo home_url(\'/\');?>" method="get" data-javo-patch-form-for-result>
<input type="hidden" name="post_type" value="item">
<input type="hidden" name="location" value="<?php echo $javo_query->get(\'location\');?>" data-javo-sf-location>
<input type="hidden" name="s" data-javo-sf-keyword>
</form>
<!-- /data-javo-patch-form-for-result : Go to Archive Page -->
因此,利用这样的代码(我之前有过这样的代码)wasn\'t an option 对于这个特定的关键字搜索,我无法找到它。

remove_all_filters(\'posts_orderby\');
    $args                   = Array(
        \'post_type\'         => \'item\'
        , \'meta_key\' => \'level\'
        , \'orderby\' => array(\'meta_value_num\' => \'ASC\', \'title\' => \'ASC\')
        , \'post_status\'     => \'publish\'
        , \'posts_per_page\'  => $ppp
        , \'paged\'           => $page
            );
            $the_query = new WP_Query( $args );
相反,搜索功能基于查询。wp中的php包括。我着手修改这个文件,但发现太难了。

解决方案是使用pre\\u get\\u posts,只针对搜索查询。

add_action( \'pre_get_posts\', \'custom_get_posts\' );
function custom_get_posts( $query ) {
if ( is_admin() || ! $query->is_main_query() )
    return;
  if ( $query->is_search() ) {
$query->set( \'meta_key\', \'level\' );
$query->set(\'orderby\', array(\'meta_value\' => \'ASC\', \'title\' => \'ASC\'));
}
}
希望这能让人免于头痛。

结束

相关推荐

Customize Query for post

当前获取我的帖子类型数据的查询时间太长,几乎需要一分钟才能呈现4.6万条记录。是否有筛选器或操作来自定义此帖子类型的SQL函数以及在管理面板中生成的标记?我正在使用的插件:高级自定义字段、WordPress SEOfunction add_custom_groupon() { $labels = array( \'name\' => \'Groupon Codes\', \'singular_name\'