質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1986閲覧

comment_IDのカスタムテーブルへの保存方法

tuckQ

総合スコア64

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/10/30 05:39

###前提・実現したいこと
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;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

WordPress であれば、comment meta を使用すればいいように思います。そうすれば、get_comment_meta( $comment_id, $meta_key ); というような感じでシンプルになると思うのですが、いかがでしょうか?

投稿2016/11/02 20:18

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tuckQ

2016/11/03 10:41

コメントいただきありがとうございます。get_comment_metaの利用も選択肢としては考えているんですが、一旦、上記条件での解決策を模索しております。なので、この質問はもう暫くオープンにさせていただこうと思いますのでご了承ください。
tuckQ

2016/11/06 01:48

いろいろ検討した結果、プログラムの安定性のことを考えて、get_comment_metaを使うことにしました。アドバイスありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問