Users Role and Access

时间:2012-07-02 作者:brian

我是一个新手,所以请耐心等待。

我正试图创建一个网站与程序员使用wordpress,但不使用它的博客或帖子<我自己不是程序员。

我希望人们注册该网站,默认情况下,他们的角色将是修改后的订阅者。这意味着他们将无法访问管理员,也无法在网站上进行任何编辑。他们所能做的就是查看页面。此外,我想限制他们只查看一个或多个特定页面。

管理员可以稍后更改其状态,并将其角色设置为常规订阅者。

我真正想做的是创建一个有完全限制的网站
用户将注册,但在管理员审核其注册并授予其访问权限之前,用户仍无法获得访问权限。

这可能吗?

1 个回复
SO网友:brasofilo

你首先需要的是理解User Roles in WordPress.

然后是一个管理自定义用户角色的插件,如User Role EditorMembers.

在管理菜单中Settings > General, 设置用户注册到自定义角色时的默认角色:
settings general default user role

插件成员具有更高级的功能,但如果您使用URE,则需要一些额外的功能来阻止对站点后端的任何访问。此处包装为plugin, 有关详细信息,请参见备注。

<?php
/**
 * Plugin Name: Block Admin Access for Certain Roles
 * Version: 0.2
 * Author: brasofilo 
 * Plugin URI: https://wordpress.stackexchange.com/q/57206/12615
 */

/**
 * When a registered user tries to visit a page for which he doesn\'t have access,
 * i.e.: http:/example.com/wp-admin/plugins.php,
 * WordPress displays a standard WP error message.
 * This will redirect instead of displaying the message:
 * "You do not have sufficient permissions to access this page."
 */
add_action( \'admin_page_access_denied\', \'access_denied_wpse_57206\' );
function access_denied_wpse_57206()
{
    wp_redirect(home_url());
    exit();
}

/**
 * Redirect users without \'edit_posts\' capability if they try to access using an URL
 * of an admin page that they would have capability to do
 * i.e.: http:/example.com/wp-admin/profile.php
 */
add_action( \'admin_init\', \'admin_init_wpse_57206\' );
function admin_init_wpse_57206()
{
    if( current_user_can( \'edit_posts\' ) ) 
        return;

    wp_redirect( home_url() );
    exit();
}

/**
 * Redirect users with \'pending\' and \'subscriber\' roles to the home url
 */
add_filter( \'login_redirect\', \'login_redirect_wpse_57206\' );
function login_redirect_wpse_57206( $url )
{
    global $user;
    if ( isset( $user->roles ) )
    {
        $result = array_intersect( $user->roles, array( \'author\', \'subscriber\' ) );
        if( !empty( $result ) )
            $url = home_url();
    }
    return $url;
}

/**
 * Hide the admin bar for users without \'edit_posts\' capability
 */
add_filter( \'show_admin_bar\', \'hide_admin_bar_wpse_51831\' );
function hide_admin_bar_wpse_51831( $bool )
{
    if( !current_user_can( \'edit_posts\' ) )
        $bool = false;

    return $bool;
}
参考资料:

结束

相关推荐