サポート » テーマ » コメント返信リンク押下時にエラーが発生する

  • 現在二つのテーマを作成しており、片方ではエラーが発生しないのに流用して作成したテーマではエラーが発生する状態です。

    エラーの内容は個別記事のコメントフォームにて、あるコメントへの返信リンクを押下した際に「Notice: Trying to get property of non-object in /home/AAA/BBB/public_html/wp-includes/comment-template.php on line 646」というエラーが表示されるというものです。

    該当の行を参照するとreturn apply_filters( 'get_comment_ID', $comment->comment_ID, $comment );という行になっています。

    コメントへのカスタマイズが原因かと思い、フォームやコメントリストに対するカスタマイズをすべて取り外した状態で再現してみたところ、同じエラーが表示されました。

    エラーの原因となっている箇所が自分ではこれ以上思い当たらなかったため、お力をお貸しください。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • モデレーター jim912

    (@jim912)

    エラーメッセージからすると、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’] の設定を行っていない。

    あたりかと思われます。参考となれば幸いです。

    モデレーター jim912

    (@jim912)

    すみません「コメントへの返信リンクを押下した際」でしたね。
    通常、WordPressのコメントの返信リンクを押下した際は、ページの遷移を伴わずにコメントフォームの位置にページ内移動をするようになっていますが、流用して作成したテーマではどのような状況となって、エラーが表示されるのでしょう。

    トピック投稿者 BIG_MON

    (@big_mon)

    返信ありがとうございます。
    現在のところ下記のように最小限の表示にすることでエラーはなくなっています。

    <?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' );
    }
    トピック投稿者 BIG_MON

    (@big_mon)

    comment-replyについては</header>の直前に挿入されていることを確認しています。

    こんにちは、

    返信用のフォームのhtmlソースで、reply フォームの投稿IDのhiddenフィールドの値はセットされていますか?

    例:

    <input type="hidden" name="comment_post_ID" value="35752" id="comment_post_ID">

    ところで

    現在二つのテーマを作成しており、片方ではエラーが発生しないのに流用して作成したテーマではエラーが発生する状態です。

    ってのが気になる…(子テーマではないようなので)diffを見てみるとこから?

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「コメント返信リンク押下時にエラーが発生する」には新たに返信することはできません。