我如何控制评论计数,过滤我的CPT回复?

时间:2015-11-06 作者:Mayeenul Islam

我正在开发一个插件,它使用comments表和customcomment_type 用于CPT回复。问题是,我的CPT在Comments 第页(/wp-admin/edit-comments.php). 所以我used a filter 把他们从评论列表中删除。它工作得很好,并且将我对CPT的回复从列表表中删除(即使是在垃圾箱中)。但是垃圾箱中的评论(回复)显示了一个计数,如果我停用我的过滤器,这些评论(回复)就在那里,所以计数是真实的。

正如您在这个屏幕截图中看到的,我的过滤器处于活动状态,我的所有CPT回复都被隐藏,列表中只有一条来自post类型的垃圾评论post, 但计数显示的是真实数据(3),因为我有2个垃圾CPT回复。

comments in trash

但我希望计数是真实的。由于视图确实包含一条注释(因为我使用自定义过滤器隐藏了CPT回复),因此我需要显示视图(1)的计数。我正在努力寻找一个合适的过滤器。

那么,我如何控制评论数量(待定、垃圾邮件和垃圾)来过滤我的CPT回复?

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

以下是将垃圾计数修改为999的三种不同方法,例如:

方法#1views_edit-comments 过滤器:

add_filter( \'views_edit-comments\', function( $views ) 
{
    $trash_count = 999; // <-- Adjust this count

    // Override the \'trash\' link:
    $views[\'trash\'] = sprintf(
      "<a href=%s>%s <span class=\'count\'>(<span class=\'trash-count\'>%d</span>)</span></a>",
      esc_url( admin_url( \'edit-comments.php?comment_status=trash\') ),
      __( \'Trash\' ),
      $trash_count
    );
    return $views;
} );
方法2comment_status_links 过滤器:

add_filter( \'comment_status_links\', function( $status_links ) 
{
    $trash_count = 999; // <-- Adjust this count

    // Override the \'trash\' link:
    $status_links[\'trash\'] = sprintf(
      "<a href=%s>%s <span class=\'count\'>(<span class=\'trash-count\'>%d</span>)</span></a>",
      esc_url( admin_url( \'edit-comments.php?comment_status=trash\') ),
      __( \'Trash\' ),
      $trash_count
    );
    return $status_links;
} );
方法3这里我们针对edit-comments.php 屏幕并调整wp_count_comments() 功能:

add_filter( \'load-edit-comments.php\', function() 
{
    add_filter( \'wp_count_comments\', function( $stats, $post_id )
    {
        static $instance = 0;
        if(  2 === $instance++ )
        {
            $stats = wp_count_comments( $stats, $post_id );

            // Set the trash count to 999
            if ( is_object( $stats ) && property_exists( $stats, \'trash\' ) )
                $stats->trash = 999; // <-- Adjust this count
        }
        return $stats;
    }, 10, 2 );
} );
类似地,对于待定和垃圾邮件计数。