实际上,我正在为WP构建自定义类型,并且需要能够将帖子访问权限限制为某些用户角色,即在管理区域,协作者可以看到帖子,但不能编辑它们,只能以只读方式打开它们。我使用了一些插件(Adminimize和User Role Editor),但据我所知,它们不适用于我的需要。
有人给我指点方向来解决这个问题吗?
实际上,我正在为WP构建自定义类型,并且需要能够将帖子访问权限限制为某些用户角色,即在管理区域,协作者可以看到帖子,但不能编辑它们,只能以只读方式打开它们。我使用了一些插件(Adminimize和User Role Editor),但据我所知,它们不适用于我的需要。
有人给我指点方向来解决这个问题吗?
brasolfilo建议您删除提交元框,这只是我认为完整解决方案的一部分。我可以使用FireBug或其他一些工具在几分钟内将“提交”按钮插入该页面。
我会。。。
卸下元框。这是brasofilo的解决方案,由于代码看起来很好,所以我不会详细说明post-new.php 对于只应具有只读访问权限的用户的帖子类型以下代码使用\'Book\' post type that can be found in the Codex. 您可以修改它以匹配您的CPT。
post-new.php
function conditional_redirect_post_new_wpse_94776() {
global $_REQUEST,$pagenow;
if (!empty($_REQUEST[\'post_type\'])
&& \'book\' == $_REQUEST[\'post_type\']
&& !empty($pagenow)
&& \'post-new.php\' == $pagenow
&& !current_user_can(\'administrator\'))
{
wp_safe_redirect(admin_url(\'edit.php?post_type=book\'));
}
}
add_filter(\'admin_menu\',\'conditional_redirect_post_new_wpse_94776\');
删除“添加新”菜单function remove_add_new_menu_wpse_94776() {
if (!current_user_can(\'administrator\')) {
remove_submenu_page(\'edit.php?post_type=book\',\'post-new.php?post_type=book\');
}
}
add_action(\'admin_menu\',\'remove_add_new_menu_wpse_94776\');
更改编辑页面上的“添加新”链接function reset_post_new_link_wpse_94776() {
global $post_new_file,$post_type_object;
if (!isset($post_type_object) || \'book\' != $post_type_object->name) return false;
if (!current_user_can(\'administrator\')) {
$post_type_object->labels->add_new = \'Return to Index\';
$post_new_file = admin_url(\'edit.php?post_type=book\');
}
}
add_action(\'admin_head\',\'reset_post_new_link_wpse_94776\');
防止偷偷摸摸的提交function stop_submit_wpse_94776() {
if (!empty($_POST) && $_POST[\'post_type\'] == \'book\' && !current_user_can(\'administrator\')) {
if (true === DOING_AJAX) {
exit;
}
if (!empty($_POST[\'post_ID\'])) {
wp_safe_redirect(admin_url(\'post.php?post=\'.$_POST[\'post_ID\'].\'&action=edit\'));
exit;
} else {
wp_safe_redirect(admin_url(\'edit.php?post_type=book\'));
exit;
}
}
}
add_action(\'admin_init\',\'stop_submit_wpse_94776\');
我想我明白了。我一直在测试它,但如果有bug,尤其是在最后一段代码中,我不会感到惊讶,如果有更优雅的方法来做同样的事情,我也不会感到惊讶排空警告。不退款。如果您只是删除了元框,那么就无法保存/更新帖子。此处使用常规立柱类型进行测试:
add_action( \'do_meta_boxes\', \'remove_publish_mbox_wpse_94776\', 10, 3 );
function remove_publish_mbox_wpse_94776( $post_type, $position, $post )
{
remove_meta_box( \'submitdiv\', \'post\', \'side\' );
}
可能有issues 使用自动保存和修订。另一种解决方案是使用jQuery使字段只读,但可能不是很可靠。
我可以登录该网站,但登录后,我在wp admin中看到一个白色屏幕。我仍然可以访问该网站,它显示我已使用每个页面顶部的工具栏登录,但每当我进入wp admin时,都会遇到一个白色屏幕。我尝试过重命名themes和plugins文件夹,甚至删除了这两个文件夹。我尝试将php内存限制提高到128M,但仍然没有成功。有什么建议吗?如果我必须重新安装Wordpress,我如何才能不丢失已经存在的一切?编辑:我也打开了调试,但仍然没有收到任何错误、警告或通知。