如何在我的插件中添加admininit,以便贡献者可以上传图像



我有自己写的名为MyPlugin的插件。我有一个"是"或"否"单选按钮,如果选项为"是",则意味着它应该允许贡献者上传图像,而"否"则意味着不应该允许。

这是允许贡献者上传图像的代码

if ( current_user_can('contributor') && !current_user_can('upload_files') )
    add_action('admin_init', 'allow_contributor_uploads');
function allow_contributor_uploads() {
    $contributor = get_role('contributor');
    $contributor->add_cap('upload_files');
} 
// this is the code to remove if the capabilities if it is added
if ( current_user_can('contributor') && current_user_can('upload_files') )
    add_action('admin_init', 'remove_contributor_upload');
function remove_contributor_upload(){
    $con = get_role('contributor');
    $con->remove_cap('upload_files');
} 

我需要一个帮助,我应该把这个代码放在插件的哪里,我试过了,但我得到了的错误

Error in wp-includes/capabilities.php on line 1059

您调用的函数在init()之前无法调用,因此它们是未定义的(特别是,wp_get_current_user()是在wp-includs/pluckable.php中定义的,在加载所有插件之后才会加载)。调用admin_init后,您需要重新排列代码以检查用户权限,例如

add_action('admin_init', 'allow_contributor_uploads');
function allow_contributor_uploads() {
    if ( current_user_can('contributor') && !current_user_can('upload_files') ) {
        $contributor = get_role('contributor');
        $contributor->add_cap('upload_files');
    }
}
// this is the code to remove if the capabilities if it is added
add_action('admin_init', 'remove_contributor_upload');
function remove_contributor_upload(){
    if ( current_user_can('contributor') && current_user_can('upload_files') ) {
        $con = get_role('contributor');
        $con->remove_cap('upload_files');
    }
}

注意:只是在这里解决你的错误问题,没有看你所做的事情的逻辑!

最新更新