php - WordPress 查询根据自定义表获取帖子

标签 php mysql sql wordpress

我有一些常规的 WordPress 帖子,需要按父类别从数据库中获取,并按我在数据库中创建的自定义表的结果排序。

我要检索帖子的父类别(包括子类别)称为 explorer,id 为 29。

自定义表称为 wp_upvotes。在这个表中有几列,但我们唯一关心的列可能是 idpostID。我想按 postID 等于 wp_post.ID 的行数对 wp_posts 进行排序,如果没有行其他帖子的那个表,那么它们应该在最后按日期排序。我希望按日期获得最多的 upvotes 和最少的 upvotes

我试过的查询是这样的(它只返回第一篇文章,而不是所有文章):

$catIDs = array(29,30,31,32);

SELECT wp_posts.*, COUNT(wp_upvotes.id) AS upvotes FROM wp_posts
LEFT JOIN wp_upvotes ON (wp_posts.ID = wp_upvotes.postID)
INNER JOIN wp_term_relationships
ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_term_taxonomy
ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
AND wp_term_taxonomy.taxonomy = 'category'
AND wp_term_taxonomy.term_id IN (" . implode(',', $catIDs) . "))
AND wp_posts.post_status = 'publish'
ORDER BY upvotes DESC, wp_posts.post_date DESC

当我删除 wp_upvotes 表的 LEFT JOIN 时,它会返回所有正确的帖子。为什么当我使用 LEFT JOIN 时它只返回一行?

SELECT wp_posts.* FROM wp_posts
INNER JOIN wp_term_relationships
ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_term_taxonomy
ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
AND wp_term_taxonomy.taxonomy = 'category'
AND wp_term_taxonomy.term_id IN (" . implode(',', $catIDs) . "))
AND wp_posts.post_status = 'publish'
ORDER BY wp_posts.post_date DESC

最佳答案

看起来主要因素是出于某种原因使用 ORDER BY wp_posts.ID 使其显示所有行而不是仅显示一行。奇怪但这是我的最终代码来执行我的操作上面想做的:

SELECT wp_posts.*, COUNT(wp_upvotes.id) AS upvotes FROM wp_posts
INNER JOIN wp_term_relationships
ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_term_taxonomy
ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
AND wp_term_taxonomy.taxonomy = 'category'
AND wp_term_taxonomy.parent = 29)
LEFT JOIN wp_upvotes ON (wp_posts.ID = wp_upvotes.postID)
WHERE wp_posts.post_status = 'publish'
GROUP BY wp_posts.ID
ORDER BY upvotes DESC, wp_posts.post_date DESC

关于php - WordPress 查询根据自定义表获取帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26921800/

相关文章:

mysql - SQL 键、外键对于目的来说有点过于锁定

javascript - 根据窗口大小删除元素

php - 可以在尝试运行任何东西之前检查步骤是否已定义吗?

mysql - 使用外键和非键属性创建复合主键

mySQL/Server 性能检查.. 1000 个基本更新查询 = QuadCore i7 设备上的 57 秒.. 好还是坏?

MySQL:SUM/MAX/MIN GROUP BY 查询优化

mysql - 如何进行有条件的加入?

php - MySQL 中的 SQL 查询 PHP

php - 增加 wamp 的内存限制

php - 打印指定行 mysql & PHP