我在插件中为我正在处理的网站创建了一个自定义帖子类型。我允许分配了自定义角色的用户添加/编辑/删除自定义帖子类型。我想给这些用户尽可能少的功能以外的管理张贴。
所以我用了remove_meta_box
通过插件为这些用户删除对话帖子编辑屏幕上的几个面板。我禁用的元框之一是commentsstatusdiv,它包含用于注释状态和trackback的表单元素。
如果缺少comments status表单元素,则comment_status
字段设置为off。我想为帖子类型设置默认评论,并阻止此角色的用户更改评论设置。但当用户保存评论后,状态设置为关闭。
我可以强制设置wp_insert_post_data
滤器但我不想为管理员重写。我希望管理员能够控制。
如何在默认情况下强制打开注释状态,并防止特定角色的用户更改注释状态,同时仍允许管理员打开/关闭注释状态?
最合适的回答,由SO网友:Dave Konopka 整理而成
这就是我的结局。对于访问权限有限的用户,我在post guid为空时设置注释。否则,我将完全删除这些用户的comment\\u status字段。这将默认启用新帖子到评论,防止受限访问用户编辑将其关闭,同时允许管理员覆盖打开/关闭的设置。
add_filter( \'wp_insert_post_data\', \'handle_comments_setting\' );
function handle_comments_setting( $data ) {
if ( current_user_can( \'limited_role_name\' )) {
if ( $data[\'guid\'] == \'\') {
//Default new posts to allow comments
$data[\'comment_status\'] = "open";
} else {
//Otherwise ignore comment setting for community_member role users
unset($data[\'comment_status\']);
}
}
return $data;
}