当サイトには広告が含まれております

寄稿者が投稿と固定ページを書き、管理者が承認するフローを作成する方法

この記事は最終更新日から5年経過しています。内容が古い可能性があります。

Webサイトのプログラムを作成する仕事をしていると、欲しい機能としてよく言われるのが「承認フロー」です。これはコンテンツを入力したりするのは部下の人が行って、公開するには上司の承認が必要というような機能です。複数人でWebサイトを更新していく場合は会社や組織でなくてもこの「承認フロー」が必要になってくるかもしれません。
WordPressではどのような形でその承認フローが実現できるのかをやってみました。

記事をざっと見る

一般的なWebサイトを管理するときに承認フローが使いたい場合とは?

会社や組織のWebサイトを作るときということで考えてみます。Webサイトの記事やページの作成をする人が複数いたとして、会社や組織としてそのコンテンツを公開する場合に、誰かが責任を持って監修したい場合が出てくるかと思います。

そんなときに

・書く人 記事を書いて、それを承認してくれるように連絡する
・承認する人 記事を見てそれで良ければ公開して、だめなら書き直しの連絡をする

というような役割にわかれて、記事を書いて公開するまでのフローができあがると思います。これを承認フローといいます。実際にはもっと複雑なものも多いですが、いちばん小さい承認フローはこの 書く人承認する人 にわかれたものだと思います。

WordPressでWebサイトを作った場合は基本的な 投稿ページ(blog的な記事)と固定ページ(会社案内などの静的ページ)を作るときに 書く人がコンテンツを作って承認する人が承認する という形ができればいいなと思われます。

ユーザーを追加するときの権限グループについて

その権限をWordPressでどうやって分けようかなと考えたときに思いつくのは 権限グループ です。

WordPressの権限グループについては、WordPressCodexの

http://wpdocs.osdn.jp/ユーザーの種類と権限

ここに詳しいことが書いてありました。

このページにあるこの表のあたりが投稿に関するもののようです。この表にあるように考えると「記事を書く人」寄稿者 という権限グループ にしておけばいいのかな?と思います。

ダッシュボード ユーザー>新規追加 をクリックして

こんな感じに 権限グループ:寄稿者 のユーザーを新しく作ります。

寄稿者で投稿ページ(blog的な記事)を書いてみる

このユーザーでログインしてみると、ダッシュボード

こんな感じでした。管理者に比べるとだいぶできることが少なそうです。

投稿をしてみたいと思います。 投稿>新規追加 をクリック

こういう画面になります。公開のところにいつもなら 公開 ボタンがありますが レビュー待ちとして送信 というボタンに変わっています。これは書く人がすぐに公開できないので、この動きで思ったとおりでした。

しかし、記事を実際に書こうとしたときに メディアを追加 がなく、記事は文字でしか書く事ができません。これは…うーん、実際の話として困るかなぁと思いました。

とりあえずこの状態で記事を書いて レビュー待ちとして送信 をクリックします。

管理者でログインした状態で、

投稿>投稿一覧 をクリックし、



保留中
をクリック

このように レビュー待ちとして送信 した記事が表示されました。

記事を公開するにはまず プレビュー で記事の中身を確認して、その内容で良かったら公開します



編集
をクリックします。

寄稿者がまだログアウトしてない場合など、この画面が出ることがあります。その場合は 編集を引き継ぐ をクリックします。

そして通常通り 公開 をクリックすると記事が公開されます。レビュー待ちとして保存 をクリックすれば、寄稿者がまた編集することも可能です。

寄稿者がコンテンツに画像を使えるようようにカスタマイズする

寄稿者がコンテンツに画像を使えるようようにしたいと思って検索したら、カスタマイズすればできるということが分かりました。

【WordPress】寄稿者権限でもメディアをアップロードをする方法

こちらに書いてある方法でできるみたいです。ありがとうございます(^^)/

子テーマのfunctions.php

if ( current_user_can('contributor') && !current_user_can('upload_files') ){
    add_action('admin_init', 'allow_contributor_uploads');
}

function allow_contributor_uploads() {
    $contributor = get_role('contributor');
    $contributor->add_cap('upload_files');
}

このコードを書いて保存すれば

このように メディアを追加 ボタンが表示されて、

画像を貼り付けることができるようになります。

寄稿者で固定ページ(会社案内などの静的ページ)を書いてみる

固定ページ(会社案内などの静的ページ)を書いてみる、というタイトルは付けたのですが、寄稿者がダッシュボードに入ったときに

??固定ページというメニューは存在しませんでした。

http://wpdocs.osdn.jp/ユーザーの種類と権限

をよく見ると、

固定ページの編集、固定ページの削除 は寄稿者には権限がありませんでした。postはあくまでも投稿のことだったのですね。寄稿者だけでなく、固定ページを投稿できるのは管理者と編集者だけ、ということみたいです。

なんとなくWebサイトのコンテンツは投稿も固定ページもどちらも変わらず、寄稿者が投稿して、それを承認する人は中身を監修して 公開 するだけ の承認フローが、実際のWebサイトを作るときに使い勝手がいい気がするのですが、WordPressのそのままではそのような動きはできないことが分かりました。

画像のアップロードができるようになった方法で固定ページの投稿ができないだろうか?

ここでちょっとあきらめようと思ったのですが、先ほどメディアを追加ができるようになったカスタマイズの方法で固定ページの投稿ができるようにならないかな?と考えました。

子テーマのfunctions.phpに次のコードを追加します。

if ( current_user_can('contributor') && !current_user_can('edit_pages') && !current_user_can('delete_pages') ){
    add_action('admin_init', 'allow_contributor_edit_pages');
}

function allow_contributor_edit_pages() {
    $contributor = get_role('contributor');
    $contributor->add_cap('edit_pages');
    $contributor->add_cap('delete_pages');
}

これでダッシュボードを再読込してみると、

おぉ!固定ページが表示されました。

このように固定ページを書いて、レビュー待ちとして送信 をクリックしてみます。

管理者で入って

固定ページ>固定ページ一覧 をクリック



保留中
をクリック

投稿と同じように、寄稿者が書いたコンテンツが表示されました。

編集をクリックして管理者が 公開 したり、レビュー待ちとして保存したりすることができるようになりました。

まとめ:functions.phpにコードを追加すれば寄稿者が画像のアップロードも固定ページの作成もできるようになった!

ということで、子テーマのfunctions.phpにコードを追加することで、寄稿者が画像のアップロードをしたり、固定ページの作成もできるようになります。2つにわかれていたので追加するコードをまとめて書くと、

// 寄稿者がメディアを追加を利用できるようにする
if ( current_user_can('contributor') && !current_user_can('upload_files') ){
    add_action('admin_init', 'allow_contributor_uploads');
}

function allow_contributor_uploads() {
    $contributor = get_role('contributor');
    $contributor->add_cap('upload_files');
}

// 寄稿者が固定ページを投稿できるようにする
if ( current_user_can('contributor') && !current_user_can('edit_pages') && !current_user_can('delete_pages') ){
    add_action('admin_init', 'allow_contributor_edit_pages');
}

function allow_contributor_edit_pages() {
    $contributor = get_role('contributor');
    $contributor->add_cap('edit_pages');
    $contributor->add_cap('delete_pages');
}

このようになります(^^)/

この記事が気に入ったら
いいね または フォローしてね!

あなたのシェアが励みになります!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントを残す

記事をざっと見る