0

私が書いた 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
4

1 に答える 1

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');
    }
}

注意:ここでエラーの問題を解決しただけで、あなたがしていることのロジックを見ていません!

于 2013-02-07T09:43:03.003 に答える