【问题标题】:Order by Post date and meta value - wordpress按发布日期和元值排序 - wordpress
【发布时间】:2018-11-23 18:59:00
【问题描述】:

我正在尝试按 2 个不同表中的 3 个不同列对我的 WordPress 帖子进行排序。

第一个是post_date,它位于wpdb->posts表中。

第二个是post的meta key和meta value,位于wpdb->postmeta。

meta_key = et_payment_package
meta_value = 1 or 0

这两列位于不同的表中。我该如何订购它们?我想将 et_payment_package=1 的帖子按最初的发布日期显示为前几篇帖子,然后是 et_payment_package=0 的所有其他帖子。

【问题讨论】:

  • 现在它只是按帖子按日期降序排列。我仍在研究如何解决这个问题。我的猜测是使用内部联接将 meta_key 和 meta_value 列“附加”到现有的帖子表中,然后通过首先使用 meta_value 排序,然后是 post_date 来处理新加入的表。这听起来对吗?
  • SELECT * FROM wp_posts INNER JOIN wp_postmeta ON wp_postmeta.post_id=wp_posts.ID WHERE post_type='project' AND meta_key='et_payment_package' ORDER BY et_payment_package DESC, post_date DESC; 这是我制作的 SQL 查询结果,但我不确定如何使用 WP_query 执行此操作。

标签: php sql wordpress


【解决方案1】:

在 4.0 中,您现在可以将数组传递给 WP_Query 作为 排序。

  $query=new WP_Query(array(
            'meta_key'=>'your_meta_key',
            'orderby'=>'date your_meta_key',
            'order'=>'desc'
    ));

【讨论】:

  • 谢谢,但在此之前如何加入表格?
  • 但是为什么要加入表格呢?这是 wordpress 方法,您需要在其中添加数组并且可以获得期望的结果,请参阅 codex.wordpress.org/Class_Reference/WP_Query
猜你喜欢
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多