多くの試行錯誤の末、ようやく自分に合った解決策を見つけました。
まず、カスタム ユーザー ロールのファイルをアップロードするには、次のロール機能が必要であることがわかりました。
$capabilites = array(
'read' => true,
'upload_files' => true,
'edit_published_pages' => true,
'edit_others_pages' => true
);
これらが特に必要な理由はわかりませんが、それらがないとエラーが発生し続けました。
次に、管理者以外のユーザーがダッシュボードにアクセスできないようにするために使用していた機能を更新する必要がありました。
function redirect_nonadmin_fromdash(){
if($_SERVER['PHP_SELF'] == '/wp-admin/async-upload.php'){
/* allow users to upload files */
return true;
} else if(get_user_role() != 'administrator'){
/* custom function get_user_role() checks user role,
requires administrator, else redirects */
wp_safe_redirect(home_url());
exit;
}
}
add_action( 'login_form_login', 'redirect_nonadmin_fromdash' );
add_action( 'admin_init', 'redirect_nonadmin_fromdash', 1 );
以前は、media-upload.php をチェックしていましたが、新しいメディア アップローダーは async-upload.php を使用します。
したがって、基本的に、これにより、管理者以外のユーザーは、ダッシュボードへのアクセスを許可せずに、フロントエンドから新しいメディア アップローダーを使用できるようになります。
また、メディア ライブラリへのアクセスも制限されますが、これも私にとって重要でした。