web-dev-qa-db-fra.com

Le plugin Facebook montre les commentaires existants

Installé le plugin officiel facebook et semble fonctionner. Le problème est que les commentaires existants sont toujours visibles (avec le style par défaut) au-dessus du formulaire de commentaires de Facebook.

Mon comments.php est vide maintenant et je le vois. (Désolé pour le texte grec, pas le temps de le changer). Je l'ai vidé parce que je savais qu'il n'y avait pas de fusion possible. Passons donc à l'ère des commentaires fb uniquement sur ce site.

Existe-t-il un moyen de supprimer complètement les commentaires existants, ou au moins de les styler et de les déplacer après ceux fb? Je ne vois aucune option dans le backoffice du plugin.

enter image description here

1
Odys

Je n'utilise pas ce plugin, mais il semble que ce modèle de commentaire est chargé avec

add_filter( 'comments_template', array( 'Facebook_Comments', 'comments_template' ) );

La structure simplifiée de ce modèle de commentaire ressemble à ceci:

if ( have_comments() ) :
    // ...
    wp_list_comments( $_comment_options );
    // ...
endif; 

$_facebook_comments = Facebook_Comments::comments_box();
if ( $_facebook_comments ) {
       do_action( 'facebook_comment_form_before' );
       echo '<div id="respond">';
       echo $_facebook_comments;
       echo '</div>';
       do_action( 'facebook_comment_form_after' );
}

Vous pouvez ensuite essayer de laisser have_comments() renvoyer false pour ignorer la partie commentaires WordPress.

En vérifiant le coeur, on trouve que:

function have_comments() {
    global $wp_query;
    return $wp_query->have_comments();
 }

où la méthode de classe est définie comme

function have_comments() {
    if ( $this->current_comment + 1 < $this->comment_count ) {
        return true;
    } elseif ( $this->current_comment + 1 == $this->comment_count ) {
         $this->rewind_comments();
    }

    return false;
}

Vous pouvez alors essayer

function skip_wp_comments() {   
    global $wp_query;
    $wp_query->current_comment = 999; // large number
}
add_action( 'template_redirect', 'skip_wp_comments' );

laisser have_comments() retourner false.

Si cela ne fonctionne pas, vous pouvez écraser le filtre comments_template pour utiliser votre propre modèle ou essayer de jouer avec la partie comment_count.

2
birgire