如何在wordpress中为current_user_can函数设置多个角色

时间:2014-06-04 17:28:41

标签: php wordpress

我正在尝试使用current_user_can函数在我的wordpress函数中运行if语句,尽管我不确定如何让它接受多个角色。我现在如何只有一个角色,但我想将作者角色添加到if语句中。

if ( current_user_can( 'contributor') ) {
// Do this
}

我想做的是设置它以检查它们是作者还是作者,虽然我不确定如何将作者添加到该作品中。

我尝试使用数组,但似乎无法正常工作

if ( current_user_can( array('contributor', 'author') ) ) {
// Do this
}

当我尝试数组时,我收到错误。我不确定我应该走的方向。

谢谢。

2 个答案:

答案 0 :(得分:1)

current_user_can功能需要capability not a role

在这种情况下,您会发现可以通过您希望能够执行此操作的最低级别角色完成的功能,并传递此功能。所有更高级别的角色也具有此功能,因此也可以执行此操作。

在您的情况下,请尝试if ( current_user_can( 'edit_posts') ) {

答案 1 :(得分:0)

将此功能与admin_init挂钩结合使用时请务必小心。如果您在前端使用ajax,请不要忘记检查是否正在使用ajax(!定义('DOING_AJAX')||!DOING_AJAX))或ajax调用/wp-admin/admin-ajax.php将被封锁https://codex.wordpress.org/Plugin_API/Action_Reference/admin_init 见下面的例子

function restrict_admin() {

    if ( ! current_user_can( 'manage_options' ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
        wp_die( __( 'You are not allowed to access this part of the site' ) );
    }
}
add_action( 'admin_init', 'restrict_admin', 1 );