【问题标题】:Wordpress sort by number custom fields gives different resultsWordpress 按数字排序自定义字段给出不同的结果
【发布时间】:2018-05-02 06:55:34
【问题描述】:

我有一个查询,它为我提供了按类别排序的自定义帖子类型帖子和一个自定义字段,该字段有一个数字,表示帖子的票数。问题是,如果 2 个帖子有 3 个投票,有时当你刷新时,它会改变它们的位置。代码如下:

$args = array(
    'numberposts'   => 10,
    'post_type'     => 'nominees',
    'meta_query' => array(
             array(
               'key' => 'category',
               'value' => get_the_ID(),
               'compare' => '=',
             )
      ),
      'orderby' => 'meta_value_num',
      'order' => 'DESC',
      'meta_key' => 'count_nominees'
);

我尝试在类别元查询上添加 order,但没有任何变化,如果帖子的票数相同,我有时在刷新时仍会得到不同的结果。通过 ID 或其他方式添加二阶订单的正确方法是什么?

谢谢。

【问题讨论】:

标签: php wordpress


【解决方案1】:

正如 cmets 中提到的,我认为是 this might help,但您可以将其扩展为在您的用例的搜索查询中更具体一点。

$args = array(
    'numberposts'   => 10,
    'post_type'     => 'nominees',
    'meta_query' => array(
        array(
            'key' => 'category',
            'value' => get_the_ID(),
            'compare' => '='
        )
    ),
    'meta_key' => 'count_nominees',
    'orderby' => array(
        'count_nominees' => 'DESC',
        'ID' => 'DESC'
    )
);

应该得到 10 帖子类型为nominees,前提是它们属于xyz 类别,并且帖子元为@ 987654327@ 和count_nominees 先按descending 顺序,然后按post IDdescending 顺序。

您可以使用 WordPress codex 上的 WP_Query 文档了解有关使用发布元数据的复杂查询的更多信息。

【讨论】:

  • 这确实有效,但我很惊讶它在没有 meta_value_num 的情况下工作,因为上次我检查时,按自定义字段排序时,它需要使用 NUM 才能获得正确的排序,嗯,所以我有点困惑
  • 我认为这是因为它正在寻找 meta_value_num 作为不存在的列名(至少在默认情况下),所以它只是跳过了 order 子句。很高兴它让一切正常了!
猜你喜欢
  • 2012-04-18
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-11
相关资源
最近更新 更多