繁体   English   中英

用于提取所有带有类别的 WordPress 帖子的 SQL 查询

[英]SQL query to extract all WordPress posts with categories

我需要从我的 WordPress 数据库中提取所有帖子以及相关类别,但不确定如何编写此查询。 我已经不高兴地尝试了几次,希望得到帮助吗?

编辑:这是我已经尝试过的:

SELECT post_title, wpr.object_id, wp_terms.name
FROM wp_terms
INNER JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
INNER JOIN wp_term_relationships wpr ON wpr.term_taxonomy_id = 
wp_term_taxonomy.term_taxonomy_id
INNER JOIN wp_posts ON ID = wpr.object_id
WHERE taxonomy = 'category' 
AND post_type = 'post' 
ORDER by post_title

这似乎有效,但它返回 1,553,我知道我的数据库中只有 1343。

编辑:不久前我们对另一个 SQL 查询做了同样的事情,发现它正在拉入修订版和其他帖子类型,但认为这是使用 post_type = 'post' 解决的

编辑:在查看数据库中的类别数时,我得出的总数为 216,如果减去 1553 - 1343 = 216,则该数字为 6。所以我认为 1553 的总数来自 wp_terms 表哪些需要排除在外,只应显示那些已发布帖子的活跃用户?

编辑:另一种可能性是每个帖子可以有多个类别,因此有更多帖子的原因(1553)。 那么如何将每个帖子分成多个类别?

非常感谢!

这是对我有用的最终答案。

SELECT DISTINCT
post_title
, post_content
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Asking Price (US\$)' AND wp_postmeta.post_id = wp_posts.ID) AS "Asking Price (US\$)"
,(SELECT group_concat(wp_terms.name separator ', ') 
    FROM wp_terms
    INNER JOIN wp_term_taxonomy on wp_terms.term_id = wp_term_taxonomy.term_id
    INNER JOIN wp_term_relationships wpr on wpr.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
    WHERE taxonomy= 'category' and wp_posts.ID = wpr.object_id
) AS "Categories"
,(SELECT group_concat(wp_terms.name separator ', ') 
    FROM wp_terms
    INNER JOIN wp_term_taxonomy on wp_terms.term_id = wp_term_taxonomy.term_id
    INNER JOIN wp_term_relationships wpr on wpr.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
    WHERE taxonomy= 'post_tag' and wp_posts.ID = wpr.object_id
) AS "Tags"
FROM wp_posts
WHERE post_type = 'post' 
ORDER BY
post_title
, post_content
/* Query for fetch post/posts using post user, post category and post_title */
$query ="SELECT wp_posts.post_title, wp_posts.post_content, wp_posts.comment_count, wp_users.display_name, wp_terms.name  
                                        FROM wp_posts
                                        JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
                                        JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
                                        LEFT JOIN wp_terms ON (wp_terms.term_id = wp_term_taxonomy.term_id)
                                        JOIN wp_users ON (wp_posts.post_author = wp_users.ID)
                                        WHERE wp_term_taxonomy.term_id IN ($bycat)
                                        AND wp_users.ID = $byuser
                                        AND wp_posts.post_type = 'post'
                                        AND (wp_posts.post_content LIKE '$bytitle' OR wp_posts.post_title LIKE '$bytitle')
                                        AND wp_posts.post_status = 'publish' 
                                        ORDER BY wp_posts.post_modified DESC";


/*---- FOR DISPLAY RESULT -----*/
$resultfirst = $wpdb->get_results($query);
        
foreach( $resultfirst as $result ){
echo $result->post_title .'
'; echo $result->display_name.'
'; echo $result->name.'
'; echo $result->comment_count.'
'; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM