有没有办法(插件?)限制用户只能编辑一页?
-
16-10-2019 - |
题
我们像CMS一样使用WordPress,非常希望允许用户拥有“首页”。理想情况下,他们将被阻止整个站点陷入困境。
是否有一种简单的方法将用户编辑权限限制为单个页面?
我目前正在使用 成员插件 要做其他基于权限的事情,因此如果解决方案可以整齐地扩展或完全替换,那将是很棒的。
创建新用户时自动创建主页的奖励点。
更新:我应该澄清说,这些页面需要仅限于网站的特定区域(即同一页面的所有孩子)。另外,在与某些用户交谈后,似乎他们发现从其主页创建子页面分支非常有用。
解决方案 2
很抱歉这样做,但我偶然发现了答案 在WordPress论坛中.
事实证明 角色scoper 做得很好。该论坛帖子的作者说最好:
使用户能够编辑一个特定页面,但没有其他内容:
- 给他们订户的WordPress角色
- 管理>页面>编辑他们的页面
- 在“高级选项”下扩展“编辑器”选项卡
- 选中用户名称左侧的非支撑复选框(如果创建子页面,请选中支撑的复选框{[]},该复选框为所有当前或将来的子页面分配了角色)
- 保存页面
其他提示
基本WordPress安装可能不会做您想要的。您可以设置一个多站点实例,并允许用户拥有自己的“子”站点,或者使用具有用户配置文件功能的BuddyPress或Mingle之类的东西。
我面对与您相同的情况,我所做的是创建一个名为“主页”的自定义帖子类型,并创建了“ Bainternet post Creation limits”插件,以限制每个用户的每个帖子类型的创建。试试看 http://wordpress.org/extend/plugins/bainternet-posts-creation-limits/
用户访问管理器插件将为您执行此操作,所有其他方法都太复杂了。 UAM很容易,设置组,并将组分配给您的子页面,准备就绪。
我会用 能力管理器 或查看Codex中的角色和功能,以便这样做。
支出意味着您已禁用“正常”帖子类型的编辑(Post,Page)。
它是 不是 如您所相信的那样。这 钥匙 是个 用户登录名. 。分类法甚至条款也可以做到这一点。
请参阅以下(也有一个查询的示例):
// 1st: Add a post type for that user with it's
// user login & according capabilities
function create_user_home() {
global $current_user;
get_currentuserinfo();
register_post_type(
'home_of_'.$current_user->user_login,
array(
'public' => true,
'capability_type' => $current_user->user_login,
'capabilities' => array(
'publish_posts' => 'publish_'.$current_user->user_login,
'edit_posts' => 'edit_'.$current_user->user_login,
'edit_others_posts' => 'edit_'.$current_user->user_login,
'delete_posts' => 'delete_'.$current_user->user_login,
'delete_others_posts' => 'delete_others_'.$current_user->user_login,
'read_private_posts' => 'read_private_'.$current_user->user_login,
'edit_post' => 'edit_'.$current_user->user_login,
'delete_post' => 'delete_'.$current_user->user_login,
'read_post' => 'read_'.$current_user->user_login,
),
)
);
}
add_action( 'init', 'create_user_home' );
// A query could be done like this:
wp_reset_query(); // to be sure
global $wp_query, $current_user;
get_currentuserinfo();
$query_user_home = new WP_Query( array(
,'order' => 'ASC'
,'post_type' => 'home_of_'.$current_user->user_login
,'post_status' => 'publish'
) );
if ( $query_user_home->have_posts() ) :
while ( $query_user_home->have_posts() ) : $query_user_home->the_post();
// check for password
if ( post_password_required() ) :
the_content();
elseif ( !current_user_can('') ) :
// display some decent message here
return;
else :
// here goes your content
endif;
endwhile;
else : // else; no posts
printf(__( 'Nothing from Mr./Mrs. %1$s so far.', TEXTDOMAIN ), $current_user->user_firstname.' '.$current_user->user_lastname);
endif; // endif; have_posts();
wp_rewind_posts(); // for a sec. query
有了分类法,这甚至更有意义,因为您只能查询使用此用户分类法的术语标记的帖子,但是这需要一个带有用户分类学条款的元信箱。条件将相同:用户登录名,您只需添加分类法:
function create_user_tax() {
if ( current_user_can("$current_user->user_login") ) :
global $current_user;
get_currentuserinfo();
$singular = $current_user->user_login;
$plural = $singular.'\'s';
// labels
$labels = array (
'name' => $plural
,'singular_name'=> $singular
);
// args
$args = array (
'public' => true
,'show_in_nav_menus' => true
,'show_ui' => true
,'query_var' => true
,'labels' => $labels
,'capabilities' => array(
'manage_'.$current_user->user_login
)
);
// Register
register_taxonomy (
$current_user->user_login
,array ( 'post', 'page' )
,$args
);
// Add to post type
// you can even add your current user post type here
register_taxonomy_for_object_type (
$current_user->user_login
,array ( 'post', 'page', 'home_of_'.$current_user->user_login )
);
endif;
}
add_action( 'init', 'create_user_tax' );
功能检查(current_user_can)的放置也可能在其他地方。取决于您的特定需求。只是为了确定这一点:这些是指导您进行支出的示例。希望 帮助 :)
我做了类似的事情,“成员”,一种自定义帖子类型以及对特定成员的作者权利的手动分配,因为它是一个小组网站,但我确实记得在某些好友新闻支持线程中阅读,这是可能的要连接注册过程,因此我想可以在注册时自动创建每个用户的页面/自定义帖子类型,并将该特定页面分配给新创建的成员作为主页。我还添加了Scribu的前端编辑器,并将后端封锁给了非管理员的成员。您可能还可以在注册上添加重定向,以便将新成员重定向到其页面(我想这可能具有一些默认内容)。
我会看看是否可以找到BuddyPress支持线程。
附录 - 编辑邮政字段上的作者选择器中有一个错误。目前,它不使用标准权限系统,这可能会使成员解决方案更加困难(尽管如果作者在页面创建中分配了,则可能会起作用)。 TRAC中有一个补丁,但我认为它还没有应用于核心。
插件S2Member是可能的,免费版本就足够了。我创建了一个客户区域,每个客户端都有一个URL,这里有一个视频教程: http://www.primothemes.com/forums/viewtopic.php?f=4&t=586&start=0&hilit=client+area