ぱくたそのような画像・写真素材サイトを無料でWordPressとUltimate Memberで1日で作る方法 その2

スポンサードサーチ

ぱくたそのような画像・写真素材サイトを無料でWordPressとUltimate Memberで1日で作る方法 その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');

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

自分の投稿だけ表示
自分の投稿だけ表示

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

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

ITを使った経営課題の解決でお困りではありませんか?

DXを始めとするITを使った経営課題の解決が上手くいっていない企業は数多くあります。

それは、単なるソリューションの導入や、社内人材への丸投げとなっており、課題解決がゴールになっていないからです。

そのためには、経営とITを理解した人材が、経営者層と共に取り組み、経営者の頭の中を可視化することが必須要件です。

現在、1時間の無料オンライン・コンサルティングを実施しております。

是非この機会にご相談ください。

構築予算が10分の1に

経営課題を解決するECサイト、越境ECサイト、BtoB ECサイト、マーケットプレイスを構築するならCS-Cartをご検討ください。

スポンサードサーチ