2013-02-06 19 views
0

我有我写的名为MyPlugin的插件。我有一个是或否的单选按钮,如果选项是肯定的意味着它应该允许贡献者上传图像,并不意味着它不应该允许。如何在我的插件中添加admin_init,以便贡献者可以上传图片

这是代码,允许贡献者上传图片

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 
+0

什么是错误,这是什么版本的WordPress? – webaware

+0

Wordpress版本是3.0.1,错误是调用未定义的函数wp_get_current_user() –

+0

为什么你运行这样一个旧版本的WordPress? – webaware

回答

1

您正在调用init()之前无法调用的函数,因此它们未定义(具体来说,wp_get_current_user()是在wp-includes/pluggable.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'); 
    } 
} 

注:只是在这里解决你的错误问题,没有看过你在做什么的逻辑!

+0

@webware这两个代码是为了允许和防止贡献者上传图片! –