ワードプレスを利用したサイトで、メンバー登録システムを構築する案件が増えてきました。

その中で「寄稿者に対して画像をアップロードできる権限を付与する」必要があったので、その方法をメモ。

通常、ワードプレスのユーザー権限「寄稿者」は、画像のアップロードができません。
寄稿者ができることは以下に限られています。

  • 記事の投稿
  • 自身の記事の編集

ちなみに投稿した記事を削除する権限もありません。

寄稿者権限でも画像をアップロードできるようにする方法

テーマ内の functions.php に次のコードを記述します。
ダッシュボード左側メニューの「外観」→「テーマエディター」からも編集できるはずです。

if ( current_user_can('contributor') && !current_user_can('upload_files') ) {
	add_action('admin_init', 'my_contributor_uploads');
}
function my_contributor_uploads() {
	$contributor = get_role('contributor');
	$contributor -> add_cap('upload_files');
}

これで管理者や編集者などと同じように「メディアを追加」ボタンが表示されるようになります。

他のユーザーがアップロードした画像を非表示にする方法

なお、上記のソースコードでは他のユーザーがアップロードした画像もすべて表示され、編集できる状態になっています。
そこでユーザーごとに「自身のアップロードした画像しか編集できない」ように処理を追加します。

function my_self_upload_media( $query ) {
	if ( $user = wp_get_current_user() ) {
		$query['author'] = $user -> ID;
	}
	return $query;
}
add_action( 'ajax_query_attachments_args', 'my_self_upload_media' );

以上。
紹介した2つのコードを用いて、「寄稿者権限」でも画像がアップロードでき、かつ各ユーザー自身が登録した画像しか編集できないようになります。

※「function.php」は1つのミスでサイト丸ごと表示されなくなる可能性のある重要なファイルです。必ず事前にバックアップをとっておきましょう。