###前提
目的:WordPressのコメント欄にカスタムコメントの内容を表示する
経緯:
- 下記「該当のソースコード」のコードはもともと正常に動いていた
- カスタムコメント保存用テーブルにある列の名称を変更「comment」から「pro」に変更
- (2.)の修正以降に投稿したコメントの表示欄で「Undefined offset: 0 のエラー」が出るようになった (※「2」の修正前に保存されたデータは正常に表示されている。下記、テーブル構成例のreview_i=1は正常、2,3でエラーが出る)
+------+--------------------------------+-----+-----+
| review_id | treki | pro |
+------+--------------------------------+-----+-----+
|1|10|null|
|2|20|テストデータ|
|3|20|null|
+------+--------------------------------+-----+-----+
###発生している問題・エラーメッセージ
Notice: Undefined offset: 0 in hoge.php on line 100
###該当のソースコード
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 treki FROM wp_review_meta WHERE review_id = $comment_ID", ARRAY_A ); 5 $treki = $results[0]['treki']; 6 7 if ( $treki ) { $return .= '(' . $treki . ')'; } 8 return $return; 9 10}
###試したこと
var_dump($result)をすると、以下の配列が確認できている。
array (size=1) 0 => array (size=1) 'treki' => string '20' (length=2)
考えられる原因のご教示よろしくお願いいたします。
###追伸(この件は下記コードで解決しました。解決に至るまでに試したコードも記述しましたのでご参考ください。)
(1)ARRAY_Aを削除
php
1 $results = $wpdb->get_results( "SELECT treki FROM wp_review_meta WHERE review_id = $comment_ID" ); 2 $treki = $results[0]['treki']; 3 4 if ( $treki ) { $return .= '(' . $treki . ')'; } 5 return $return;
結果 Fatal error: Cannot use object of type stdClass as array in
(2) ARRAY_Nに変更
php
1 $results = $wpdb->get_results( "SELECT treki FROM wp_review_meta WHERE review_id = $comment_ID", ARRAY_N ); 2 $treki = $results[0]['treki']; 3 4 if ( $treki ) { $return .= '(' . $treki . ')'; } 5 return $return;
結果 Notice: Undefined offset: 0 in
(3) ARRAY_Aに戻し、SQL文を下記に変更。
php
1 $results = $wpdb->get_results( "SELECT * FROM wp_review_meta WHERE review_id = $comment_ID", ARRAY_A ); 2 3 if ( $results ) { $return .= '(' . $results[0]['treki'] . ')'; } 4 return $return;
結果 解決
###追伸
「なぜ最初のコードでうまくいかないのか?」が未だに分からないので、お分かりになる方がいらっしゃったら解説いただけるとありがたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/30 04:48