web-dev-qa-db-fra.com

Commentaires contre Pingbacks page suivante

J'ai un problème vraiment énervant.

S'il n'y a pas de commentaires, les commentaires ne seront pas affichés. S'il n'y a pas de pingback, ne s'affichera pas.

Cependant, s'il y a des pingbacks et que j'ai beaucoup de commentaires, il y a donc une page, une page 3, etc., alors voici ce qui se passe: Les pingbacks apparaissent correctement sur page 1 . Si je vais à page 2 , je vois le balisage HTML pour les Pingbacks, mais pas de Pingbacks.

Je ne comprends pas pourquoi. Ce que je veux, c'est que les mêmes pingbacks que sur la page 1 soient affichés ou aucun balisage HTML (et pas de pings).

Vous pouvez voir le problème ici. Sur la première page, tout fonctionne bien, mais à la page 2, je ne reçois que le balisage HTML pour les pingbacks.

Voici le code:

<?php if ( have_comments() ) : ?>
        <?php if ( ! empty($comments_by_type['comment']) ) : ?>
       <h2 class="h2comments"><img src="http://zoomingjapan.com/wp-content/themes/alltuts-child/images/comments_big.png" /><?php comments_number('No Comments', '1 Comment', '% Comments' );?> <a href="#respond" class="addComment"><img src="http://zoomingjapan.com/wp-content/themes/alltuts/images/add_your_coment_ver2.png" border="0"></a></h2>


        <ul class="commentlist">
      <?php wp_list_comments('type=comment&callback=mytheme_comment'); ?>
<div class="navigation">
  <?php paginate_comments_links(); ?> 
 </div>
        </ul>
        <?php endif; ?>



        <?php if ( ! empty($comments_by_type['pings']) ) : ?>
        <h2 id="pings">Trackbacks/Pingbacks</h2>
    <ul class="pinglist">
    <?php wp_list_comments('type=pings&callback=list_pings'); ?>
        </ul>
        <?php endif; ?>



 <?php else : // this is displayed if there are no comments so far ?>

        <?php if ('open' == $post->comment_status) : ?>
                <!-- If comments are open, but there are no comments. -->

        <?php else : // comments are closed ?>
                <!-- If comments are closed. -->
                <p class="nocomments">Comments are closed.</p>

        <?php endif; ?>
<?php endif; ?>

Ce que j’ai déjà essayé, c’est de repositionner ou même de supprimer la navigation. Cela n'a rien changé.

D'autres idées?

EDIT: 21 octobre

Si cela ne fonctionne pas pour supprimer le balisage HTML, pourquoi ne pas afficher un message dans le balisage HTML, quelque chose comme "Désolé, mais il n'y a pas encore de pings." J'ai essayé cela, mais rien ne s'affiche:

  <?php if ( ! empty($comments_by_type['pings']) ) : ?>
    <h2 id="pings">Trackbacks/Pingbacks</h2>
    <ul class="pinglist">
    <?php wp_list_comments('type=pings&callback=list_pings'); ?>
    </ul>
    <?php 
         else :
         echo '<p class="no-pingbacks">sorry but there are no pingbacks yet</p>';
        endif; 
         ?> 

J'espère que quelqu'un peut aider.

1
japanworm

Puisque vous énumérez les pings séparément des commentaires, vous devrez probablement filtrer get_comments_number pour en exclure les pings. Voici comment je le fais :

<?php
function oenology_comment_count( $count ) {  
// Only filter the comments number
// in the front-end display
if ( 
// WordPress conditional that returns true if
// the current page is in the WP-Admin back-end
! is_admin() 
) {
    global $id;
    $comments_by_type = &separate_comments( get_comments( 'status=approve&post_id=' . $id ) );
    return count( $comments_by_type['comment'] );
} 
// Otherwise, when in the WP-Admin
// back end, don't filter comments
// number
else {
    return $count;
}
}
// Hook custom comment number into 'get_comments_number'
add_filter('get_comments_number', 'oenology_comment_count', 0);
?>

Je suis à peu près certain que cela affectera également le nombre de commentaires en ce qui concerne la pagination des commentaires. (Avertissement: votre liste de pings produira non paginée .)

1
Chip Bennett

Je faisais face au même problème. On dirait que je l'ai résolu. Si quelqu'un d'autre est confronté à ce problème:

Remplacez ceci:

wp_list_comments('type=pings&callback=list_pings');

Par ça:

wp_list_comments('type=pings&callback=list_pings&page=1&per_page=1000');
0