评论与Pingback下一页问题

时间:2011-10-17 作者:japanworm

我有一个非常恼人的问题。

如果没有评论,则不会显示评论。如果没有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; 
         ?> 
我希望有人能帮忙。

2 个回复
最合适的回答,由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)

SO网友:Krishna Kant Sharma

我也面临同样的问题。看来我解决了。如果其他任何人面临此问题:

替换此:

wp_list_comments(\'type=pings&callback=list_pings\');
通过以下方式:

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

结束

相关推荐

如何使用REWIND_COMMENTS()-何时以及如何使用它?

我以前从未弄乱过评论循环,但我正在尝试一些东西。基本上,我在弹出式iframe中有我的注释表单,这是一个ajax操作,用于处理表单提交、插入注释和更新注释列表。不过,我在页面上第二次运行注释循环时遇到问题。注释表单可以正常运行,但注释不会显示在Ajax刷新中。have_comments() 结果为false,并且wp_list_comments() 无输出。你知道怎么了吗?这是我的Ajax处理程序,以防出现问题:/* Submit Comments Through AJAX */ add