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

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

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

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

Q&A

解決済

1回答

2489閲覧

WordPressのコメント欄カスタマイズ

tuckQ

総合スコア64

WordPress

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

0グッド

0クリップ

投稿2016/10/01 01:17

###前提・実現したいこと

###発生している問題・エラーメッセージ

  • 投稿ページのコメント欄はうまく表示される
  • TOPページのサイドバーにある投稿欄ウィジェットでエラーが出る
Notice: Trying to get property of non-object in /var/www/wordpress/wp-includes/comment-template.php on line 665

###該当のソースコード
apply_filtersのある行がline 665

php

1function get_comment_ID() { 2 $comment = get_comment(); 3 4 /** 5 * Filters the returned comment ID. 6 * 7 * @since 1.5.0 8 * @since 4.1.0 The `$comment_ID` parameter was added. 9 * 10 * @param int $comment_ID The current comment ID. 11 * @param WP_Comment $comment The comment object. 12 */ 13 return apply_filters( 'get_comment_ID', $comment->comment_ID, $comment ); 14}

function.phpに下記のコードを記述し呼び出しています。

php

1////////出力 2////性別 3 4add_filter( 'get_comment_author_link', 'attach_sex_to_author' ); 5 6 7function attach_sex_to_author( $author ) { 8 $sexies = get_comment_meta( get_comment_ID(), 'sex'); 9 if ( $sexies ) { 10 foreach ($sexies as $sex) 11 $author .= $sex . ' '; 12 } 13 return $author; //コメント者の後に続けて出力。 14} 15////年齢層 16add_filter( 'get_comment_author_link', 'attach_age_to_author' ); 17 18 19function attach_age_to_author( $author ) { 20 $ages = get_comment_meta( get_comment_ID(), 'commenterAge'); 21 if ( $ages ) { 22 foreach ($ages as $age) 23 $author .= '(' .$age . ')'; 24 } 25 return $author; //コメント者の後に続けて出力。 26} 27

###試したこと
フィルターフックget_comment_author_linkが投稿欄では作動するけど、TOPページでは作動しないのが原因?と推測し、他のフィルターフックをget_comment_ID などをフックに設定したり試しましたが、うまくいきませんでした。

対処方法を教えていただければありがたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

原因はわかりませんが、参考にされた記事が書かれた数ヵ月後に get_comment_author_link が少し変更になり、引数に comment_ID を受け取れるようになっています。

【get_comment_author_link() | Function | WordPress Developer Resources】
https://developer.wordpress.org/reference/functions/get_comment_author_link/#source

PHP

1return apply_filters( 'get_comment_author_link', $return, $author, $comment->comment_ID );

フィルタを二つに分けているのが気にはなりますが、下記のようにして試してみてください。

PHP

1add_filter( 'get_comment_author_link', 'attach_age_to_author', 10, 3 ); 2function attach_age_to_author( $return, $author, $comment_ID ) { 3 // 性別もここに入れればいいような。 4 $ages = get_comment_meta( $comment_ID, 'commenterAge', true ); // 最後に true を渡したら1件のみ取得できるはず 5 if ( $ages ) { $return .= '(' .$age . ')'; } 6 return $return; 7} 8

【get_comment_meta() | Function | WordPress Developer Resources】
https://developer.wordpress.org/reference/functions/get_comment_meta/

投稿2016/10/01 02:18

kei344

総合スコア69398

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

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

tuckQ

2016/10/01 04:36

教えていただいた方法でうまく表示できました!フィルタも1つにまとめ、仕組みも理解できました。もとのエラー原因も、時間がある時にでも深堀りして研究してみようと思います。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問