1日でWordPressで簡単に無料(フリー)画像・写真素材サイトを作る方法 その2

公開日: 2019/09/03 更新日: 2019/10/31
カテゴリー: WordPress
  • このエントリーをはてなブックマークに追加

1日でWordPressで簡単に無料(フリー)画像・写真素材サイトを作る方法 その1の続きです。

前回は、無料(フリー)画像・写真素材サイトに必要最低限な機能として、まず以下の3つを想定しました。

  • 画像アップロード・ダウンロード機能
  • 寄稿者に画像アップロード機能を追加
  • ダウンロード数をトラッキング

また、画像アップロード・ダウンロード機能をWordPressの基本機能を使って構築する方法について説明をしましたので、今回は寄稿者に画像アップロード機能を追加する方法について考えていきます。

スポンサードサーチ

寄稿者に画像アップロード機能を追加

WordPressのユーザー権限は、以下のように分かれています。

  • 管理者(Administrator):WordPress の全ての操作が可能
  • 編集者(Editor):全てのコンテンツに関して投稿、編集、削除、公開が可能
  • 投稿者(Author):記事の投稿、編集、削除、公開が可能
  • 寄稿者(Contributor):記事の下書きと編集のみ可能で公開は不可
  • 購読者(Subscriber):閲覧のみ可能で記事を投稿や編集は不可

この中の、寄稿者は画像などをアップロードできるメディアの機能も使えません。

そこで、無料(フリー)画像・写真素材サイトを運営をしていく中で、外部のメンバーからに寄稿者として画像素材を投稿してもらうために、画像アップロードを機能を追加する必要があります。

寄稿者に画像アップロード機能を追加

WordPressのユーザー権限の寄稿者に画像アップロード機能を追加するには、 functions.php に以下のコードを追加します。

//寄稿者に画像アップロード機能を追加
function allow_contributor_uploads() {
    $contributor = get_role('contributor');
    $contributor->add_cap('upload_files');
}
if ( current_user_can('contributor') && !current_user_can('upload_files') ){
  add_action('admin_init', 'allow_contributor_uploads');
}

寄稿者が自分で追加した画像だけ管理

寄稿者が複数になってくると、他人が投稿した画像に対して、勝手に削除などを行えてしまうのも望ましくありませんので、アカウントを持っている寄稿者自身がアップロードした画像以外は、表示・編集ができないようにする必要があります。

デフォルトの状態では寄稿者は、自分の投稿した画像しか編集はできませんが、全ての画像の表示はできてしまいます。

全ての画像が表示される

全ての画像が表示される

そこで、自分で追加した画像だけ表示するように functions.php に以下のコードを追加します。

//寄稿者が自分で追加した画像だけ管理
function show_only_authorimage( $where ){
  global $current_user;
  if(is_admin()){
    if(current_user_can('contributor') ){
      if( isset( $_POST['action'] ) && ( $_POST['action'] == 'query-attachments' ) ){
        $where .= ' AND post_author='.$current_user->data->ID;
      }
    }
  }
  return $where;
}
add_filter( 'posts_where', 'show_only_authorimage' );

これで、自分の投稿した画像だけが表示されるようになりました。

自分の投稿した画像だけ表示

自分の投稿した画像だけ表示

こちらのコードでは、寄稿者(contributor)だけに限定していますが、ここに投稿者(author)や編集者(Editor)を追加する事もできます。

寄稿者が自分で追加した投稿だけ管理

画像については、自分で追加した画像だけ管理できるようにしましたが、投稿については制限をしていません。

寄稿者は、WordPressの基本設定のままでは記事の新規投稿、下書き状態の編集、削除、記事のレビュー待ち送信が出来、記事公開後は閲覧のみが出来ます。

ただ、寄稿者に全ての記事タイトルが下書きも含めて見えてしまいます。

全ての投稿が表示

全ての投稿が表示

そこで、寄稿者が自分の投稿だけを閲覧できるように functions.php に以下のコードを追加します。

//寄稿者が自分で投稿した記事だけ管理
function show_only_authorpost($query) {
    global $current_user;
    if(is_admin()){
        if(current_user_can('contributor') ){
            $query->set('author', $current_user->ID);
        }
    }
}
add_action('pre_get_posts', 'show_only_authorpost');

これで、自分の投稿だけが表示されるようになりました。

自分の投稿だけ表示

自分の投稿だけ表示

今回、画像アップロード・ダウンロード機能、寄稿者に画像アップロード機能を追加して、寄稿者の画像と投稿だけが見えるようにしました。

次は、ダウンロード数をトラッキング機能を追加していきます。

スポンサードサーチ

タグ: , , , , , , , ,