###前提・実現したいこと
WordPressのコメント機能をカスタマイズして独自テーブル「wp_review_meta」にデータ保存したい
具体的には、
0. コメントの基本情報は「wp_comments」テーブルに保存しつつ、追加情報を「wp_review_meta」に保存
0. 上記2つのテーブルの情報をcomment_IDで紐付けて表示
のようなイメージ。
###試したこと
プラグインを作成。
プラグイン有効時に独自のデータベースを作成するところまではうまくできた。
テーブル構成は下記です。
※「comment_id」は後でwp_commentsテーブルの「comment_ID」に関連づけるために用意
※主キーは「review_id 」でauto incrementを指定している
+------+--------------------------------+-----+-----+
| review_id | comment_id | data1 | data2 |
+------+--------------------------------+-----+-----+
|1|1|てすとでーた|テストデータ|
+------+--------------------------------+-----+-----+
コメント投稿時にアクションフックでオリジナル関数を呼び出し、データベースに新規追加or更新するコードを記述。(下記参照)
###該当のソースコード
php
1add_action( 'comment_post', 'save_review_data' ); 2function save_review_data( $comment_id ) { 3 global $wpdb; 4 5 //「data1」「data2」は、コメント投稿欄のカスタムフィールドから取得と仮定 6 $temp_data1 = isset($_POST['data1']) ? $_POST['data1'] : null; 7 $temp_data2 = isset($_POST['data2']) ? $_POST['data2'] : null; 8 9 $get_id = $wpdb->get_var( 10 $wpdb->prepare( "SELECT comment_id FROM 11 wp_review_meta WHERE 12 comment_id = %d", $comment_id) 13 ); 14 15 //保存するために配列にする 16 $set_arr = array( 17 'review_id' => '', 18 'data1' => $temp_data1, 19 'data2' => $temp_data2, 20 ); 21 22 //レコードがなかったら新規追加あったら更新 23 if ($get_id) { 24 $wpdb->update( $table_name, $set_arr, array('comment_id' => $comment_id)); 25 } else { 26 $set_arr['comment_id'] = $comment_id; 27 $wpdb->insert( $table_name, $set_arr); 28 } 29 $wpdb->show_errors(); 30
###発生している問題・エラーメッセージ
「wp_comments」へのデータ保存は通るのに、「wp_review_meta」にデータが保存されない。
###補足情報(言語/FW/ツール等のバージョンなど)
ちなみに、以下のサイトを参考にしながら開発にチャレンジしています。
WordPressでオリジナルのデータベース(テーブル)を作成する [プラグイン開発中級編]
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/16 13:36
2016/10/16 14:12
2016/10/23 04:50