サポート » 使い方全般 » タグを付けた記事のみを抽出してその記事を書いたユーザのリストを出力

  • 解決済 SWD

    (@swd)


    WordPressというよりはSQLの質問になってしまいそうで恐縮なのですが、
    複数のユーザで管理するサイトを作成するにあたり、
    ユーザ数が量が多いこともあり、SQLで直接WordpressのDBを
    抽出する必要がありそうです。
    ただ、そのSQL文について明るくない為抽出するための
    SQL文を御教示いただけますと幸いです。

    【やりたいこと】
    表題の通り、タグをつけた投稿記事のみを抽出して
    その記事を書いたユーザの名前(user_login)の一覧を抽出したい。

    【私の方で調べた抽出に必要であろうテーブルとフィールド名抜粋】
    ———————————————–
    【投稿記事テーブル】
    テーブル名:
    wp_posts
    フィールド名:
    ID ←投稿ID(保存順に自動採番)
    post_author ←ユーザID
    ———————————————–
    【タグ・カテゴリ(term)テーブル】
    テーブル名:
    wp_term_taxonomy
    フィールド名:
    term_taxonomy_id←termユニークID
    taxonomy ←term が属する taxonomy※以下の3パターン
    ‘category’: 記事カテゴリ
    ‘link_category’: リンクカテゴリ
    ‘post_tag’: タグ
    ※今回は’post_tag’で抽出することになります。
    ———————————————–
    【タグ・カテゴリと投稿記事のリレーション用テーブル】
    テーブル名:
    wp_term_relationships
    フィールド名:
    object_id ←投稿ID
    term_taxonomy_id←term_taxonomy テーブルの term_taxonomy_id
    ———————————————–
    【ユーザ情報テーブル】
    テーブル名:
    wp_users
    フィールド名:
    ID ←ユーザID(保存順に自動採番)
    user_login ←ログインユーザ名
    ———————————————–

    と、ここまでは調査したのですが
    タグを書いた記事で抽出後の記事から、ユーザIDで
    ユーザのログイン名を出力する記述がわからない状態です。

    どうぞよろしくお願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • WordPress内で直接SQL文を発行して・・・というテンプレートの書き方はしないので
    WP_Queryという関数を使うとか、メインループを変えるのならpre_get_postsフックを使うとかになると思います。

    トピック投稿者 SWD

    (@swd)

    >nekomimiTaicho 様

    回答ありがとうございます。
    すみません、私の書き方がまずかったですね。

    ここでの「出力」とは、フロントエンドへの出力ではなくて
    phpMyAdmin経由から、SQLをたたいて指定の条件に沿った一覧を
    CSVなどで出力させたい、という内容となります。

    これは、
    フロントエンド(テンプレート)で
    直接出力させるにはあまりにも膨大な量となり
    500errorになる可能性があったためです。

    トピック投稿者 SWD

    (@swd)

    自己解決といいますか、
    SQLがわかるスタッフに聞いて解決しましたので念のためその際のSQL文を掲載させていただきます。

    select wp_terms.name, user_login from wp_users left join wp_posts on wp_posts.post_author = wp_users.ID left join wp_term_relationships on wp_posts.ID = wp_term_relationships.object_id left join wp_term_taxonomy on wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id left join wp_terms on wp_terms.term_id = wp_term_taxonomy.term_id where wp_term_taxonomy.taxonomy = 'post_tag';

    上記でタグがついている記事のユーザ名一覧をそのタグと共に抽出できました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「タグを付けた記事のみを抽出してその記事を書いたユーザのリストを出力」には新たに返信することはできません。