Комментарии против Отклики на следующую страницу выпуска
У меня действительно досадная проблема.
Если комментариев нет, комментарии не будут отображаться. Если нет откликов, он не появится.
Однако, если есть отклики, и у меня много комментариев, поэтому есть страница 2, страница 3 и т. Д. Комментариев, То происходит следующее: Отклики отображаются правильно на странице 1. Если я перейду на страницу 2, я увижу HTML-разметку для обратных ссылок, но никаких фактических обратных ссылок.
Я не понимаю почему?. Я хочу, чтобы либо появлялись те же отклики, что и на странице 1, либо вообще отсутствовала разметка HTML (и никаких пингов).
Вы можете увидеть проблему здесь. На первой странице все работает нормально, но на странице 2 я получаю только HTML-разметку для откликов.
Вот код:
<?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; ?>
Что я уже пытался, так это изменить положение или даже удалить навигацию. Это ничего не изменило.
Есть еще какие-нибудь идеи?
РЕДАКТИРОВАТЬ: 21 октября
Если это не сработает, чтобы удалите разметку HTML, а затем как насчет отображения сообщения в разметке HTML вместо этого, что-то вроде "Извините, но пока нет сообщений". Я пробовал это, но ничего не отображается:
<?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;
?>
Я надеюсь, что кто-нибудь сможет помочь.
2 answers
Поскольку вы перечисляете пинги отдельно от комментариев, вам, вероятно, потребуется отфильтровать get_comments_number
, чтобы исключить пинги. Вот как я это делаю:
<?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);
?>
Я совершенно уверен, что это также повлияет на количество комментариев в отношении разбиения комментариев на страницы. (Предостережение: ваш список пингов будет выводить без пометки.)
Я столкнулся с той же проблемой. Похоже, я решил эту проблему. На случай, если кто-то еще столкнется с этой проблемой:
Замените это:
wp_list_comments('type=pings&callback=list_pings');
Этим:
wp_list_comments('type=pings&callback=list_pings&page=1&per_page=1000');