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