手遅れでなければ、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)
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;
>LVP8さま
回答ありがとうございます。
こういった方法もあるんですね。ひとつの方法に拘らずに工夫次第ということが非常に勉強になりました。
>jim912さま
INNER JOINで苦戦していましたが、この方法で取得することができました。
SQLを使いこなせるようになるとWordPressのカスタマイズも幅が広がるのでしょうね。
非常に勉強になりました。ありがとうございました!
(@wp-spoon)
11年、 3ヶ月前
お世話になっております。
コメント部分のカスタマイズを行なっており、新しい入力フィールドを作ってテーブルwp_commentmetaに登録しています。
登録したデータをデータベースから直接取得しようと試みたのですが、wp_commentmetaには投稿IDが無いため投稿に関連づいたデータだけ取得する方法がわかりません。
投稿テーブルと結合しようにも、投稿IDが無いのでどう関連付けていいのか。
いろいろ試してみたものの上手くいかなかったので質問させて頂きました。
get_comments()を使えばできると思うのですが、MySQLの勉強としてチャレンジしたいと思っています。
よろしくお願い致します。