我有一个非常恼人的问题。
如果没有评论,则不会显示评论。如果没有pingback,则不会显示。
但是,如果有pingback,并且我有很多评论,因此有第2页、第3页等评论,那么会发生以下情况:pingback正确显示在page 1.如果我去page 2, 我看到了pingback的HTML标记,但没有实际的pingback。
我不明白为什么。我想要的是,要么显示与第1页相同的pingback,要么根本没有HTML标记(并且没有ping)。
你可以看到这里的问题。在第一页上,一切正常,但在第二页上,我只得到pingback的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; ?>
我已经尝试过重新定位甚至删除导航。这一点都没有改变。
还有其他想法吗?
EDIT: October 21st
如果删除HTML标记不起作用,那么在HTML标记中显示一条消息怎么样,比如“对不起,还没有ping”我尝试了此操作,但没有显示任何内容:
<?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;
?>
我希望有人能帮忙。
最合适的回答,由SO网友:Chip Bennett 整理而成
由于您将ping与注释分开列出,因此可能需要进行筛选get_comments_number
排除ping。Here\'s how I do it:
<?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);
?>
我相当肯定这也会影响评论分页的评论数量。(注意:您的ping列表将输出未触发的ping)