【问题标题】:WordPress Query get posts based on custom tableWordPress Query 根据自定义表获取帖子
【发布时间】:2014-11-14 02:09:36
【问题描述】:

我有一些常规的 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

【问题讨论】:

    标签: php mysql sql wordpress


    【解决方案1】:

    看起来主要因素是出于任何原因使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多