エラーメッセージからすると、635行目の
$comment = get_comment();
でコメントの取得に失敗していると思われます。この get_comment() でコメントの取得に失敗する理由ですが、グローバル変数である $GLOBALS[‘comment’] が設定されていない可能性が高いです。
この $GLOBALS[‘comment’] ですが、wp_list_comments でコメントの表示を行い、パラメータ の walker を指定していなければ、自動的に設定されるものになっています。
いただいた情報の中で考えられる原因としては、
- wp_list_comments を使わずに、$GLOBALS[‘comment’] が設定されていない。
- wp_list_comments の callback パラメータで指定されている関数内で、$GLOBALS[‘comment’]、または、$comment を使っており、$GLOBALS[‘comment’] が異なる値で書き換えられてしまっている。
- wp_list_comments の walker パラメータで指定されているクラスの start_elメソッド内で、$GLOBALS[‘comment’] の設定を行っていない。
あたりかと思われます。参考となれば幸いです。
すみません「コメントへの返信リンクを押下した際」でしたね。
通常、WordPressのコメントの返信リンクを押下した際は、ページの遷移を伴わずにコメントフォームの位置にページ内移動をするようになっていますが、流用して作成したテーマではどのような状況となって、エラーが表示されるのでしょう。
返信ありがとうございます。
現在のところ下記のように最小限の表示にすることでエラーはなくなっています。
<?php comment_form(); ?>
<?php if(have_comments()): ?>
<ol>
<?php wp_list_comments(array(
'avatar_size'=>32,
'style'=>'li',
'type'=>'comment',
)); ?>
</ol>
>どのような状況となって、エラーが表示されるのでしょう。
流用元では返信リンクを押下した際にフォームがその書き込みの下に移動し、「○○へ返信」という表示とともにコメントの返信がシームレスに行える動きとなっていました。
しかし流用版では返信リンクの押下と同時に返信URLへと一度遷移し、フォームの位置は変わらず先述したエラーが表示された後にフォームが通常表示されるという状態でした。
このとき「○○へ返信」の○○については、無記名時の名前となっており正常に取得できていなかったです。
コメント自体はこの状態でも行えます。
ご記載のエラーメッセージに出くわしたことはないですが、似た症状になったことがあります。
コメントの返信リンクを押下した際に、ページの遷移を伴わずにコメントフォームの位置にページ内移動するには、該当ページ(例えばsigleページ)で
/wp-includes/js/comment-reply.min.js
を読み込む必要があります。
これがぬけていると、
返信リンクの押下と同時に返信URLへと一度遷移してしまいます。
アクションフック wp_enqueue_scripts のタイミングで
以下を行っているかどうか確認してみてください。
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
comment-replyについては</header>の直前に挿入されていることを確認しています。
こんにちは、
返信用のフォームのhtmlソースで、reply フォームの投稿IDのhiddenフィールドの値はセットされていますか?
例:
<input type="hidden" name="comment_post_ID" value="35752" id="comment_post_ID">
ところで
現在二つのテーマを作成しており、片方ではエラーが発生しないのに流用して作成したテーマではエラーが発生する状態です。
ってのが気になる…(子テーマではないようなので)diffを見てみるとこから?