remove_cap nothing changes

时间:2017-01-30 作者:DCdesign

我一直在尝试禁用具有角色编辑器的特定用户可以编辑帖子、阅读和发布帖子的可能性我有此代码,但验证时保持不变

function set_capabilities() {

    $user = new WP_User( 9 );

    $caps = array(\'edit_posts\', \'publish_posts\', \'read\');

    $user->remove_cap( $caps );
}
add_action( \'init\', \'set_capabilities\' );

1 个回复
SO网友:CodeMascot

看看remove_cap 方法来自WP_User 类别-

/**
 * Remove capability from user.
 *
 * @since 2.0.0
 * @access public
 *
 * @param string $cap Capability name.
 */
public function remove_cap( $cap ) {
    if ( ! isset( $this->caps[ $cap ] ) ) {
        return;
    }
    unset( $this->caps[ $cap ] );
    update_user_meta( $this->ID, $this->cap_key, $this->caps );
    $this->get_role_caps();
    $this->update_user_level_from_caps();
}
这里的文档中说,参数必须是字符串。但你通过了数组。因此,更新后的代码如下所示-

function the_dramatist_set_capabilities() {
    $user = new WP_User( 9 );
    $caps = array(\'edit_posts\', \'publish_posts\', \'read\');
    foreach ($caps as $cap) {
        $user->remove_cap( $cap );
    }
}
add_action( \'init\', \'the_dramatist_set_capabilities\' );
希望以上代码可以解决您的问题。并且始终使用一个唯一的关键字作为函数的前缀,就像我在这里使用的前缀一样the_dramatist_.

相关推荐