web-dev-qa-db-fra.com

commentaires script de réponse ne fonctionne pas

Malheureusement, mon lien de "réponse" pour les commentaires threadés ne fonctionne pas.

La situation présente:

Premièrement, je charge le script de réponse aux commentaires (vérifiez si les scripts contiennent load: works) dans le <head> à l'aide de deux fonctions (la première wp_register_script() sur le hook init, la seconde wp_print_scripts() au crochet wp_head):

Ensuite, j'ajoute le lien Répondre:

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
);

qui produit cette sortie HTML (exemple)

<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>

J'ai tout ce que je lis:

Mes commentaires sont dans un <div id="comments"> et le formulaire de commentaires au-dessus dans un <div id="respond">.

On me laisse toujours tomber dans # reply-anchor et dans le formulaire de commentaire situé au-dessus des commentaires (http://localhost/wordpress/?p=149&cpage=2&replytocom=11#respond), au lieu d’obtenir le formulaire de commentaire affiché sous le commentaire auquel je souhaite répondre.

Que puis-je faire de mal?

Google, les tutoriels, les guides pratiques et autres étaient jusqu'à présent sans aide. Tout semble être conforme à la norme recommandée ...

Merci beaucoup.

4
kaiser

Ne liez pas le fichier de script directement. Mettez-le en file d'attente à la place, par exemple dans 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' );

Vous pouvez également le faire, dans l'en-tête du document, avant l'appel 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' ); 
}
?>

MODIFIER:

Connexion à wp_head, plutôt que par exemple wp_print_scripts, est important. Le wp_print_scripts ne fonctionne pas de la même manière que wp_print_styles pour afficher les liens de feuilles de style.

Donc, si vous utilisez wp_print_scripts, changez le hook en wp_head.

EDIT 2:

En vous basant sur votre code lié à Pastebin, avez-vous essayé ce qui suit pour éliminer les problèmes potentiels?

  1. Supprimer la fonction de rappel de wp_comment_list()
  2. Déplacer l'appel wp_comment_list() à avant l'appel comment_form()
  3. Supprimer le tableau d'arguments de comment_form()

Je ne sais pas si cela résoudra votre problème, mais ils peuvent nous aider à retrouver son origine.

8
Chip Bennett