我有自己写的名为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');
}
}
注意:只是在这里解决你的错误问题,没有看你所做的事情的逻辑!