管理员中的CURRENT_USER_CAN功能未按预期工作

时间:2018-12-18 作者:joshmoto

我正在尝试使用阻止管理仪表板访问wp_redirect().

但是使用current_user_can(\'edit_post\') 是意外的。

请参阅下面我的完整功能。。。

/**
 * user constructor method.
 */
public function __construct()
{

    // block admin dashboard access
    add_action( \'admin_init\', array( $this , \'block_admin_access\' ) );

}

/**
 * block admin dashboard access to users who cant edit posts
 */
public function block_admin_access () {

    // if users cannot edit posts
    if( ! current_user_can(\'edit_post\') ) {

        // redirect user to home page
        wp_redirect( get_home_url() );

    }

}
当我以管理员用户身份登录时,上面的代码会阻止我访问仪表板。管理员完全可以编辑帖子,那么为什么上面的代码会将我从仪表板重定向到别处呢?

当我使用current_user_can(\'edit_post\') 在前端,这种行为是正常的。

有人知道为什么会这样吗?

1 个回复
SO网友:Krzysiek Dróżdż

和你在一起current_user_can 打电话一切都很好。问题出在其他地方。。。

如果你看看Roles and Capabilities, 您将看到,没有像edit_post. 因此,您的代码工作正常-管理员无法edit_post, 因为没有这样的功能(除非它是您的代码在其他地方注册的自定义功能)。

但我的直觉告诉我,你想检查当前用户是否可以edit_posts ;)

相关推荐

正在尝试获取wp-includes/capabilities.php中非对象的属性

在调试中,我每分钟都会收到以下通知序列。日志:[23-Oct-2012 13:27:33 UTC] PHP Notice: Trying to get property of non-object in mysite/wp-includes/capabilities.php on line 1022 [23-Oct-2012 13:27:33 UTC] PHP Notice: Trying to get property of non-object in mysite/wp-includes/