###前提・実現したいこと
WordPressでコメント欄のカスタマイズをしています。
具体的には、
0. 通常のコメント項目「名前」「e-mail」「url」の他に「data1」「data2」などの項目を追加
0. 追加項目の保存用にオリジナルのテーブル「mytable」を作成
0. コメント登録時「wp_comments」と「mytable」それぞれにデータを保存
0. 「wp_comments」のcomment_IDと「mytable」のreview_idを照合して連結
0. 連結したデータをコメント欄に表示
という仕組みを考えております。
###質問
上記「4.」で連結するIDを「wp_comments」「mytable」それぞれで自動採番させており、これだと下記の「発生している問題」に記述したような不具合につながる可能性がありそうだと危惧しております。
コメント登録時に自動採番される「wp_comments」のcomment_IDを元に、「mytable」のreview_idを採番する仕組みに変えれないでしょうか?(IDの不一致が発生する可能性を無くすため)
アドバイスのほど、どうぞよろしくお願いいたします。
###発生している問題
コメント登録の際に何かしらエラーが発生し、
0. 「wp_comments」へのデータ保存「成功」
0. 「mytable」へのデータ保存「失敗」
となるとauto_incrementのID番号が一致しなくなり、コメント連結がうまくいかなくなる可能性がある。
※実際、この機能の構築中にこのケースが発生しました。
###参考情報(テーブル構成/ソースコード)
【テーブル構成】
■wp_comments
+------+--------------------------------+-----+-----+
| comment_ID(auto_increment) | comment_post_ID| author | ...
+------+--------------------------------+-----+-----+
|1|25|aさん|
|2|25|bさん|
|3|25|cさん|
+------+--------------------------------+-----+-----+
■mytable
+------+--------------------------------+-----+-----+
| review_id(auto_increment) | data2 | data2 |
+------+--------------------------------+-----+-----+
|1|10|テストデータa|
|2|20|テストデータb|
|3|20|テストデータc|
+------+--------------------------------+-----+-----+
【ソースコード】
■コメント欄での表示方法
php
1add_filter( 'get_comment_author_link', 'show_review', 10, 3 ); 2function show_review( $return, $author, $comment_ID ) { 3 global $wpdb; 4 $results = $wpdb->get_results( "SELECT * FROM wp_review_meta WHERE review_id = $comment_ID", ARRAY_A ); 5 6 if ( $results ) { $return .= '(' . $results[0]['data1'] . ')' . '(' . $results[0]['data2'] . ')'; } 7 return $return;
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/03 10:41
2016/11/06 01:48