mysql - 一个查询以获取 WordPress 中每个类别的最新 7 篇文章

标签 mysql wordpress posts

我正在寻找编写单个自定义 SQL 查询以从自定义帖子类型的 6 个特定类别中的每一个中检索最新的 7 篇帖子。

我知道如何查询自定义帖子类型和分类法,但我的 SQL 知识有限。我不知道如何让 WordPress 为我提供 6 个类别中每个类别的 7 个最新帖子。只要内容存在,返回的顺序并不重要。

示例:如果我有类别 1、2、3、4、5、6,我想从每个类别中检索 7 个最新帖子。具体来说,该查询应该提取类别 1 的 7 个最新帖子、类别 2 的 7 个最新帖子,等等,所有这些都通过一个查询完成。

我不想有 6 个单独的 WP_Query 实例,因为它效率不高。

最佳答案

你需要像下面这样使用 UNION

SELECT wposts.* 
FROM $wpdb->posts wposts
    LEFT JOIN $wpdb->postmeta wpostmeta ON wposts.ID = wpostmeta.post_id 
    LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id)
    LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE wpostmeta.meta_key = 'customDateField'
    AND wpostmeta.meta_value >= CURDATE()
    AND $wpdb->term_taxonomy.taxonomy = 'category'
    AND $wpdb->term_taxonomy.term_id IN(1)
ORDER BY wpostmeta.meta_value ASC
LIMIT 7
UNION
SELECT wposts.* 
FROM $wpdb->posts wposts
    LEFT JOIN $wpdb->postmeta wpostmeta ON wposts.ID = wpostmeta.post_id 
    LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id)
    LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE wpostmeta.meta_key = 'customDateField'
    AND wpostmeta.meta_value >= CURDATE()
    AND $wpdb->term_taxonomy.taxonomy = 'category'
    AND $wpdb->term_taxonomy.term_id IN(2)
ORDER BY wpostmeta.meta_value ASC
LIMIT 7
UNION
SELECT wposts.* 
FROM $wpdb->posts wposts
    LEFT JOIN $wpdb->postmeta wpostmeta ON wposts.ID = wpostmeta.post_id 
    LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id)
    LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE wpostmeta.meta_key = 'customDateField'
    AND wpostmeta.meta_value >= CURDATE()
    AND $wpdb->term_taxonomy.taxonomy = 'category'
    AND $wpdb->term_taxonomy.term_id IN(3)
ORDER BY wpostmeta.meta_value ASC
LIMIT 7

关于mysql - 一个查询以获取 WordPress 中每个类别的最新 7 篇文章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7426023/

相关文章:

php - 克隆页面但使用不同的小部件区域

profile - Buddypress 如何在新个人资料选项卡中显示成员(member)帖子

facebook - Facebook 群组 Feed 中的帖子没有 "from"字段

tags - 11ty - 如何在我的 post.njk 文件中显示帖子标签?

php - 将数据保存到文件和。将其保存到 MySQL DB

mysql - 优化非常大的表的存储大小

mysql - 外键是否可以存储与主键值不匹配的值?

MYSQL 访问被拒绝 'user' @'ip'

jquery - 将背景图像添加到 wordpress 中的导航菜单并动态更改图像

mysql - 使用vagrant安装Lamp Stack后如何设置数据库