13

関連するカテゴリとともに WordPress DB からすべての投稿を抽出する必要がありますが、このクエリの書き方がわかりません。私はすでに喜びを感じずに数回刺しましたが、助けていただければ幸いです。

編集:これが私がすでに試したことです:

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

これは機能しているように見えますが、DB に 1343 しかないことを知っているところで 1,553 を返します。

編集: 少し前に別の SQL クエリで同じことを行ったところ、リビジョンやその他の投稿タイプが取り込まれていることがわかりましたが、これは post_type = 'post' を使用して解決されたと考えました

編集: DB 内のカテゴリの数を見ると、1553 - 1343 = 216 を引くと、合計 216 という数になります。したがって、この合計 1553 は wp_terms テーブルから来ていると思います。どれを除外する必要があり、公開された投稿でアクティブになっているものだけを表示する必要がありますか?

編集: 他の可能性は、各投稿に複数のカテゴリを含めることができるため、投稿を増やす理由です(1553)。では、各投稿を複数のカテゴリに分けるにはどうすればよいでしょうか?

どうもありがとう!

4

2 に答える 2

30

これが私のために働いた最終的な答えです。

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
于 2012-11-07T07:52:17.137 に答える
0
/* 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)
                                        左結合 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 = '投稿'
                                        AND (wp_posts.post_content LIKE '$bytitle' OR wp_posts.post_title LIKE '$bytitle')
                                        AND wp_posts.post_status = '公開'
                                        ORDER BY wp_posts.post_modified DESC";


/*---- 表示結果について ------*/
$resultfirst = $wpdb->get_results($query);
        
foreach( $resultfirst as $result ){
echo $result->post_title .' 
'; echo $result->display_name.'
'; echo $result->name.'
'; echo $result->comment_count.'
'; }
于 2021-12-20T09:15:32.967 に答える