web-dev-qa-db-ja.com

コメント返信スクリプトが機能しない

残念ながら、スレッド化されたコメントに対する私の "返信"リンクが機能していません。

現状:

最初に2つの関数(initフックの最初のwp_register_script()、wp_headフックの2番目のwp_print_scripts())を使用して、コメント応答スクリプト(スクリプトの内容がロードされているかどうかを確認します。)を<head>にロードします。

それから私は返信リンクを追加します。

comment_reply_link( 
     array( 
         'reply_text'   => __( 'Reply', OXO_TEXTDOMAIN )
        ,'depth'        => isset( $args['args']['depth'] ) ? $args['args']['depth'] : (int) 3
        ,'max_depth'    => isset( $args['args']['max_depth'] ) ? $args['args']['max_depth'] : (int) 5
     )
    ,get_comment_ID()
    ,$post->ID
);

これは、このHTML出力を生成します(例)

<a onclick="return addComment.moveForm("comment-11", "11", "respond", "149")" href="/wordpress/?p=149&cpage=2&replytocom=11#respond" class="comment-reply-link">Reply</a>

私が読んだ推奨事項に従ってすべてを取得しました:

私のコメントは<div id="comments">内にあり、その上のコメントは<div id="respond">内にあります。

コメントフォームを返信したいコメントの下に表示するのではなく、#respond-anchorとコメントの上のコメントフォーム(http://localhost/wordpress/?p=149&cpage=2&replytocom=11#respond)にドロップします。

何が悪いの?

グーグル、チュートリアル、ハウツー、その他は今のところ役に立たない。すべてが推奨規格に従っているようです...

どうもありがとう。

4
kaiser

スクリプトファイルを直接リンクしないでください。代わりにそれをエンキューしてください。 functions.php内:

function mytheme_enqueue_comment_reply() {
    // on single blog post pages with comments open and threaded comments
    if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { 
        // enqueue the javascript that performs in-link comment reply fanciness
        wp_enqueue_script( 'comment-reply' ); 
    }
}
// Hook into wp_enqueue_scripts
add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_comment_reply' );

wp_head()呼び出しの前に、ドキュメントの先頭でこれを行うこともできます。

<?php
// on single blog post pages with comments open and threaded comments
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { 
    // enqueue the javascript that performs in-link comment reply fanciness
    wp_enqueue_script( 'comment-reply' ); 
}
?>

編集:

例えばではなくwp_headにフックするwp_print_scriptsは重要です。 wp_print_scriptswp_print_stylesがスタイルシートのリンクを出力するのと同じようには働きません。

そのため、wp_print_scriptsを使用している場合は、フックをwp_headに変更してください。

編集2:

Pastebinにリンクされたコードに基づいて、潜在的な問題を排除するために次のことを試みましたか?

  1. wp_comment_list()からコールバック関数を削除
  2. wp_comment_list()呼び出しをbeforecomment_form()呼び出しに移動します
  3. comment_form()から引数の配列を削除

これらのどれかがあなたの問題を解決することを私は知らないが、それらは私達がその起源を突き止めるのを助けるかもしれない。

8
Chip Bennett