隐藏Trackback/Pingbak(如果不存在)

时间:2013-02-02 作者:George Grigorita

我设法对我的评论进行编号,然后将评论与pingback和trackback分开。我现在唯一的问题是,我不想显示本节的标题(trackback/pingback所在的位置),除非有任何标题。

这是我在注释中使用的代码。php:

<div class="pingback"><h3>Trackbacks/Pingbacks:</h3>
        <?php   
        wp_list_comments(array(
          \'callback\'=>\'list_pings\',
          \'style\'=>\'ol\',
          \'type\'=>\'pings\',
        ));
        ?> 
</div>
这是函数的代码。php:

<?php
function list_pings($comment, $args, $depth) {
$GLOBALS[\'comment\'] = $comment;
?>
<li id="comment-<?php comment_ID(); ?>"><?php comment_author_link(); ?>
<?php } ?>
<?php
add_filter(\'get_comments_number\', \'comment_count\', 0);
function comment_count( $count ) {
if ( ! is_admin() ) {
global $id;
$comments_by_type = &separate_comments(get_comments(\'status=approve&post_id=\' . $id));
return count($comments_by_type[\'comment\']);
} else {
return $count;
}
}
?>
我想我应该做一个if/else 声明,但我不知道从哪里开始。

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

我使用了一个助手函数。

functions.php

/**
 * Count amount of pingbacks + trackbacks for a post.
 *
 * @param int $post_id Post ID for comment query. Default is current post.
 * @return int
 */
function t5_count_pings( $post_id = NULL )
{
    $pings    = 0;
    $comments = FALSE;

    if ( NULL !== $post_id )
    {
        $comments = get_comments(
            array (
                \'post_id\' => $post_id, # Note: post_ID will not work!
                \'status\'  => \'approve\'
            )
        );
    }
    elseif ( ! empty ( $GLOBALS[\'wp_query\']->comments ) )
    {
        $comments = $GLOBALS[\'wp_query\']->comments;
    }

    if ( ! $comments )
        return 0;

    foreach ( $comments as $c )
        if ( in_array ( $c->comment_type, array ( \'pingback\', \'trackback\' ) ) )
            $pings += 1;

    return $pings;
}

comments.php

if ( $num = t5_count_pings() )
{
?>
<h2 id="pingbacks"><?php
    printf( _n( \'One pingback\', \'%d pingbacks\', $num, \'t5_theme\' ), $num );
?></h2>
<ol class="pinglist ■ sans-font">
<?php
wp_list_comments(
    array (
        \'type\'     => \'pings\',
        \'style\'    => \'ul\',
        \'callback\' => \'t5_list_pings_callback\'
    )
);
?></ol>
<?php
}
现在,如果没有pingback和trackback$num = 0,则不会打印列表的标记。

您可以使用带有post ID的函数来计算当前页面以外的其他post的ping数,如下所示:t5_count_pings( 12345 ).

结束

相关推荐

Same email for all comments

我有An administrator must always approve the comment 已选中,并在任何时候向我发送电子邮件Anyone posts a comment.这会向帖子作者发送一封电子邮件。我不想那样。我有一个人负责我网站上的评论,我希望这一个人能收到所有这些电子邮件。有没有办法做到这一点?