• 解決済 wp-spoon

    (@wp-spoon)


    お世話になっております。

    コメント部分のカスタマイズを行なっており、新しい入力フィールドを作ってテーブルwp_commentmetaに登録しています。
    登録したデータをデータベースから直接取得しようと試みたのですが、wp_commentmetaには投稿IDが無いため投稿に関連づいたデータだけ取得する方法がわかりません。

    投稿テーブルと結合しようにも、投稿IDが無いのでどう関連付けていいのか。
    いろいろ試してみたものの上手くいかなかったので質問させて頂きました。

    get_comments()を使えばできると思うのですが、MySQLの勉強としてチャレンジしたいと思っています。

    よろしくお願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • 手遅れでなければ、commentmeta の meta_key の名前に、投稿IDを含ませる、例えば、現在 “poll” という meta_key で登録しているのなら、 “poll_136” みたいにするのも方法の一つかとおもいます。

    登録時の例
    update_coment_meta( $comment_id, 'poll_' . $comment_post_ID, $meta_value );
    呼び出し時の例
    get_comment_meta($comment_id, 'poll_' . $comment_post_ID, true)

    モデレーター jim912

    (@jim912)

    wp_commentmeta テーブルの comment_id は、wp_comments テーブルの comment_IDと同値となっており、wp_comments テーブルの comment_post_ID は、wp_posts テーブルの ID と同値になっています。

    特定の記事IDから、comment_meta テーブルのデータを取得するには、wp_commentmeta テーブルと wp_comments テーブルを内部結合(INNER JOIN)して取得する必要があります。

    記事ID 1の comment_meta を全て取得するSQL例

    SELECT wp_commentmeta.*
    FROM   wp_commentmeta
    INNER JOIN wp_comments ON wp_commentmeta.comment_id = wp_comments.comment_ID
    WHERE wp_comments.comment_post_ID = 1
    ORDER BY meta_id ASC;

    トピック投稿者 wp-spoon

    (@wp-spoon)

    >LVP8さま

    回答ありがとうございます。
    こういった方法もあるんですね。ひとつの方法に拘らずに工夫次第ということが非常に勉強になりました。

    >jim912さま
    INNER JOINで苦戦していましたが、この方法で取得することができました。
    SQLを使いこなせるようになるとWordPressのカスタマイズも幅が広がるのでしょうね。
    非常に勉強になりました。ありがとうございました!

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「wp_commentmetaの投稿との関連付け」には新たに返信することはできません。