ワードプレスでアップロードしたメディア(画像等)の所有者権限を移動する方法

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

実はワードプレスで「会員サイトを構築」する際は気をつけなければならない点があります。1つは「アカウントを作成した会員さんが自由に記事を投稿できるユーザー参加型サイトを運営」するときです。

ユーザー参加型サイトを構築する際はワードプレス上に「2種類のユーザーが必要」となります。1つはワードプレス全体を管理できるサイト管理者。そしてもう1つが記事を投稿できる投稿者。もちろん投稿者は「参加ユーザー毎にアカウントを発行する」ので一般的には下記のような2種類のユーザーが必要です。

▼管理者ユーザー
└サイト運営者(1人)

▼投稿者ユーザー
└記事の投稿者(複数)

まず考慮しなければならないのは「投稿者Aが管理画面から記事を作成する際」に「投稿者Bが作成した投稿記事やアップロードした画像を表示させない」という点。もし全員で画像を共有する特殊なコンセプトであれば問題ありませんが、一般的には投稿者Aの管理画面内に投稿者Bのデータが表示されるのはNGです。

もし第三者(知らないユーザー)がアップした画像や記事が「自分自身の投稿画面」にも表示されていると利用者によっては誰かの画面に入ってしまったと勘違いしてサービス自体を退会する可能性もあります。

ユーザー参加型サイトの運営では「利用する側の目線がもっとも大切」なのは言うまでもありません。管理者が考える「便利だろう」は「参加する側が考える安心感」とはイコールではないという意味です。

ちなみにメディア内の画像を自分自身の画像のみに絞る方法(functions.phpに記述)は下記となります。

//メディアに自分自身が投稿したファイルしか表示させない処理(投稿者ユーザー向け)
function show_only_author_mine_image( $where ){
	global $current_user;
	if(is_admin()){
		if(current_user_can('author') ){
			if( isset( $_POST['action'] ) && ( $_POST['action'] == 'query-attachments' ) ){
				$where .= ' AND post_author='.$current_user->data->ID;
			}
		}
	}
	return $where;
}
add_filter( 'posts_where', 'show_only_author_mine_image' );

会員サイトの構築では「メディア内に表示させる画像」は自分自身がアップロードしたファイルのみに制御するのが一般的です。つまり、管理者や他の投稿者がアップロードしたファイルは非表示にする処理が必要となります。メディアからアップロードした画像が(ライブラリでも)アップロードした投稿者本人しか見えないようにする工夫は会員サイトを運営するうえでの基本中の基本とも言える処理です。

ひと言で会員サイトと言ってもさまざまな種類がありますので実際にはもっと細かい制御が必要です。余計なメニューをすべて消したり、ユーザーが勘違いする機能などは極力非表示化していきます。そもそもワードプレス自体が元々ブログツールなので会員サイト構築に使う場合はそれなりに最適化する必要があります。

下記のように「公開」のみできる仕様に絞ったり、カテゴリーを1つしか選べなくするなど細かい制御は管理画面上では見えない部分でも細部まで制御しなければなりません。考慮しなくても運営自体はできるのかもしれませんが「参加したユーザー(投稿者)側の作業もその分むずかしくなる」ので事前準備が必要です。

アップロードしたメディア(画像等)の所有者権限を移動する方法

では本題に戻します。本日は「アップロード済みの画像権限を変更する方法」です。

僕たちのようなサービスを立ち上げる側(開発者)は、会員サイトを作る際の事前テストで「管理者ユーザーとして画像をアップロード」したり「投稿者ユーザーとして画像をアップロード」するので所有権が違う画像が色々混在(公開時はすべてのデータを一旦削除してゼロから運営するのが基本)してしまいます。

ただ、場合によってはテストでアップロードした画像をそのまま本番サイトとしても活用したくなるシチュエーションがあるのでそういった場合は画像を残してアップロードした画像の権限を変更しています。

会員サイトの立ち上げは3つの目線が必要

余談ですが、僕たちは作業を進める際に「3つの目線」で視点を切り替えています。

1. 開発者
2. 管理者
3. 投稿者

少しややこしいので補足しておきますね。

開発者としての目線

会員サイトを納品する際は依頼元の会社に「管理者ユーザー」として、ワードプレスを管理できる権限を渡します。ただ僕たちは仕組み自体を作る側のいわば「開発者」です。つまり、管理者と投稿者ユーザーの目線も考えなければならないので常に視点が3種類必要です。

管理者としての目線

会員サイトを運営する会社は、投稿者(参加ユーザー)を束ねる管理者として運営を行っていきます。そのため管理者と投稿者の権限は切り離して実装しなければなりません。管理者がアップロードした画像が「投稿者全員」に表示されていたら大変ですよね。管理者は「管理者&投稿者」の動きを把握する必要があります。

投稿者としての目線

会員としてサイトに参加するユーザーは「投稿者」として複数人が登録を行います。投稿者が違和感なく記事を投稿できるか?アップロードした画像が他の投稿者に表示されていないか?ワードプレスに導入している他のプラグインの余計なメニューが表示されたままになっていないか?なども入念なチェックが必要です。

このように各権限で考えると「会員サイトの構築は意外とたくさんの目線が必要」ということがご理解いただけますよね。会員登録ができるから会員サイトといったわけではなくて「複数人がアクセスする」というあらゆる状況を先回りして、運営に影響がないよう事前調整を加えるのが開発者としての重要な仕事となります。

管理者がアップロードした画像を特定の投稿者に切り替える方法

この機能は僕たち開発者も一時的に使っています。会員サイトの投稿者が使えるとまずいので運営前に画像の所有権を変更する際にだけ活用しています。更新が古いので管理画面からはインストールできません。

プラグインのデータをダウンロードする

プラグインは「Media Author」と検索するとヒットします。

ダウンロードしたデータを解凍して「/plugins」にアップロード

以下が「media-author」をアップロードした状態です。

管理画面から有効化する

ワードプレスの管理画面「プラグイン > インストール済みプラグイン」から有効化をクリック。

有効化ができたら以下のメッセージが表示されます。設定は特に必要ありません。

メディアからライブラリを開く

アップロード済みの画像を開きましょう。

画像をクリックして詳細画面を開くと「所有者名」がセレクトボックスで追加されています。

セレクトボックスには各ユーザー名が表示されますので選びなおすだけでOKです。変更したあとは保存ボタンなどを押す必要もありません。選択しなおしたらその段階でAjax通信されて保存が実行されます。

まとめ

本日はメディアの所有者を後から変更する方法をご紹介いたしました。会員サイトを構築している最中にアップロード済みの画像の所有者を切り替えたいときにとても便利です。ぜひご活用くださいませ。

もし会員サイトを構築されている場合は以下のプラグインも使えばより高速で作業を進められます。想定している全ユーザーでログインを繰り返して細かい見落としがないように気をつけましょう。

ワードプレスで会員制サイトを構築時にユーザーをその場で切り替えられる便利プラグイン

最新式の無料プラグインを事前公開

WordPressは公式サイトに登録されているプラグインだけでは機能を補足しきれません。当サイトでは使いやすさを追求した魅惑的なプラグイン無料でダウンロードいただけます。運営ホームページのマーケティング力をさらに高めるチャンスです。まずは無料でDLしてお試しくださいませ。
改良されたプラグインを確認する