如何在WP-Admin评论区显示自定义评论类型?
解决WordPress后台显示自定义评论类型的问题
你的代码没生效的核心原因是没有限定修改的是评论管理页面的主查询,WordPress后台存在多种查询场景,全局修改会导致无效甚至冲突。另外还要确保自定义评论类型注册时配置了允许在后台评论列表显示的参数。
修正后的代码
使用parse_comment_query钩子,精准定位评论管理页面的查询:
add_action('parse_comment_query', function ($query) { // 仅在后台评论列表页面且是主查询时生效 if (is_admin() && $query->is_main_query() && !isset($_GET['page'])) { // 替换成你需要显示的所有自定义评论类型 $query->query_vars['type__in'] = ['comment', 'review', 'vote']; } }, PHP_INT_MAX);
关键注意事项
- 检查自定义评论类型注册配置:如果注册时未设置
'admin_show_in_comment_list' => true,后台默认不会显示这类评论。注册代码示例:// 若为关联自定义文章类型的评论 register_post_type('review', [ // ...其他必填参数 'supports' => ['comments'], 'admin_show_in_comment_list' => true, ]); // 若为独立注册的评论类型 add_action('init', function() { register_comment_type('vote', [ 'label' => '投票评论', 'admin_show_in_comment_list' => true, // ...其他参数 ]); }); - 避免同时使用多个钩子:你之前同时用了
parse_comment_query和comments_pre_query,后者未修改返回的评论数据反而可能干扰默认逻辑,只保留一个钩子即可。
测试验证
- 替换代码后刷新后台评论列表
- 若仍看不到目标评论,检查数据库中对应评论的
comment_type字段值是否与你设置的类型名称完全一致(比如是否是review而非reviews)
内容的提问来源于stack exchange,提问作者Ivijan Stefan Stipić
相关产品推荐
相关产品推荐

