我如何允许用户注册,但阻止他们访问WordPress后端?

时间:2016-03-18 作者:Andrew Welch

我想允许用户注册、登录,然后根据他们与HTML5游戏和一些前端表单的交互来捕获信息。

我仍然希望有一个管理员用户谁可以编辑一些网页内容和管理网站的多语言方面。

有没有插件可以阻止用户访问Wordpress管理员?过去我允许用户在上注册Wordpressthis site

但当确认的用户登录时,他们会看到wordpress管理员。我不要这个。我想在登录到某个页面后重定向用户,但他们仍然具有登录状态,我可以与他们的个人资料进行交互(将他们的分数和响应保存到前端表单)。

我并不是要求人们给我关于如何实现这一目标的完整答案,而是如果你对这类问题有一些经验,你能为我提供一些指导吗。

1 个回复
最合适的回答,由SO网友:jgraup 整理而成

检查管理员用户

current_user_can ( \'manage_options\' )

show_admin_bar ( false )

wp_redirect ( site_url( \'/\' ), 302 )


Putting it all together

function wpse_20160318_user_checks() {

    // ignore administrators
    if ( ! current_user_can( \'manage_options\' ) ) {

        // ignore these events
        if  ((   defined( \'DOING_AJAX\' )   && DOING_AJAX )
            || ( defined( \'DOING_CRON\' )   && DOING_CRON )
            || ( defined( \'WP_CLI\' )       && WP_CLI )
            || ( defined( \'REST_REQUEST\' ) && REST_REQUEST )

        ) {
            return;
        }

        if ( is_admin() ) {

            // redirect if on the dashboard / back-end to a front-end page
            wp_redirect( site_url( \'/\' ), 302 );
            exit;

        }
        else {

            // remove admin bar on front-end
            show_admin_bar( false );
        }
    }
}

add_action( \'init\', \'wpse_20160318_user_checks\' );

相关推荐

如何从USERS-edit.php中删除颜色选择器代码

我知道我不应该改变Wordpress的核心。但如果我想在“用户编辑”中使用仪表板用户配置文件页面。php和删除大块代码(如颜色选择器)的方法。从第259行到第336行-我想全部删除。<?php if ( ! ( IS_PROFILE_PAGE && ! $user_can_edit ) ) : ?> <tr class="user-rich-editing-wrap"> <th scope="