仅在管理面板中显示自己的评论

时间:2021-10-08 作者:Imran Hossan

我的网站是一个社区博客!在WordPress仪表板上>;评论我只想显示当前用户的评论。其他用户的评论应该是隐藏的,并且只对管理员可见。

All User comment!

有什么功能吗?

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

我相信下面的方法应该可以做到,只需添加functions.php 文件

/**
 * Prevent non-administrator users from viewing others comments.
 */
add_filter( \'comments_list_table_query_args\', function( $args ) {
    global $pagenow;

    if ( $pagenow == \'edit-comments.php\' ) {
        $user = wp_get_current_user();
        $value = !empty( $args[ \'author__in\' ] ) ? $args[ \'author__in\' ] : [];

        if ( is_array( $value ) && !in_array( $user->ID, $value ) && !in_array( \'administrator\', (array)$user->roles ) ) {
            $value[] = $user->ID;
        }

        $args[ \'author__in\' ] = $value;
    }

    return $args;

}, PHP_INT_MAX );
我可以通过查看wp-admin/edit-comments.php. 在文件中,我找到了对类的调用WP_Comments_List_Table (位于wp-admin/includes/class-wp-comments-list-table.php) 扩展了WP_List_Table

根据经验,我知道WP_List_Table 需要方法prepare_items() 它通常处理查询。在这里我找到了过滤器comments_list_table_query_args 它允许我们在进行注释查询之前修改查询参数。