检查管理员是否已登录WordPress

时间:2014-05-16 05:14:31

标签: php wordpress

我们有一个复杂的奇怪系统,我们需要检查wordpress管理员是否已登录并登录我不仅仅意味着会话,而是在发送查询以验证输入的凭据时的第一个。我正在考虑做传统的PHP,我做的事情如下:

if(isset($_POST['submit']) { // do something }

但那是不正确的方式。我到底想看看这个peice,我相信它的wp-login.php但是却找不到我想要的东西。

感谢

3 个答案:

答案 0 :(得分:0)

global $current_user;
$user = get_userdata($current_user->ID);

$userRole = (!empty($user->roles) ? $user->roles : '');
if(in_array('administrator', $userRole)) {
     // do your stuff
}

或者您可以尝试: - http://codex.wordpress.org/Function_Reference/current_user_can

答案 1 :(得分:0)

我们可以在过滤器挂钩login_redirect中添加一些自定义操作。如果表单未提交,则$user参数是WP_Error对象。

add_filter( 'login_redirect', function( $redirect_to, $requested_redirect_to, $user )
{
    if( !is_wp_error( $user ) && in_array( 'administrator', $user->roles ) )
    {
        # Do your thing; here just inspecting the WP_User Object
        wp_die( 
            sprintf( '<pre>%s</pre>', print_r( $user, true ) ),
            'Var dump',
            array( 
                'response' => 500, 
                'back_link' => true 
            )
        );
    }

    return $redirect_to;
}, 10, 3 );

答案 2 :(得分:0)

您可以使用非常简洁的Wordpress功能来确定用户功能,它被称为current_user_can()

<?php if ( current_user_can('update_core') ) { echo 'The current user is Administrator or Super administrator (in Multisite)'; }

只有管理员的单站点安装具有以下功能列表。在多站点中,只有超级管理员具有以下功能:

update_core 
update_plugins 
update_themes 
install_plugins 
install_themes 
delete_themes 
edit_plugins 
edit_themes 
edit_users 
create_users 
delete_users 
unfiltered_html

请点击此处查看更多information