Code Fan 49

中年で開発に目覚めたおじさんの技術ブログ。WordPress・Rails・Cloud9などなど。

サイトオペレーター向けにWordPressのダッシュボード項目をUser Role EditorとWP Admin UI Customizeで最適化する。

はじめに

半年以上にわたって遅々と進まなかったWordPressサイトが年末にようやく納品の運びとなりました。 が、依頼先から「クライアントにいらん操作をさせたくないからいらないメニュー消したい」と言われました。 とりあえず投稿者権限でアカウント発行すればいいいやんーと思ってたら、以下のような細かい内容の依頼。

  • 投稿はそのまま。が、カテゴリーとタグメニューは消す。
  • 固定ページは既存ページの編集のみ。しかも特定のページだけいじらせたい。
  • 設定、プラグイン、ユーザー、ツールは消す。
  • プラグイン一つだけ触らせたい。

みたいなカスタマイズすることに。

時間がないのでプラグインを使う。

せこせことフックをかけて仕上げるのがどちらかというと好みなのですが、時間がないのでプラグイン使用です。 以下の二つのコンビネーションで。

User Role Editor

ja.wordpress.org

User Role Editorは権限毎に細かい機能を設定できる。 投稿者なのにプラグインを操作させたりすることも可能。 今回の場合のメリットがあるのは「権限を新設できる」こと。 今回はクライアント専用の権限を発行しました。

f:id:koyacch:20171223060212p:plain

WP Admin UI Customize

ja.wordpress.org

WP Admin UI Customizeは任意にメニューを隠すことができるプラグイン。 類似のプラグインも多いのですが、ポイントは「権限毎に設定できる」こと。 なので管理者権限のメニューとかはデフォルトのままで、特定のユーザー権限だけメニュー構成を変えることができます。

作業内容

今回の場合は、User Role Editorで設定したクライアント権限だけメニュー構成を変えました。

f:id:koyacch:20171223060137p:plain

このように設定しました。 これで「client権限」のユーザーのみ画面構成を変えれます。 あとはダッシュボードから左メニューから管理バーからザクザク消せます。

注意点は、この設定はリンク先をあくまで隠しているだけであって、実際にはリンク先は存在するということ。 URL叩けばみえちゃいます。 が、お客さんはそれはわからんだろうということで。

実際に機能を制限したいのであれば、それはUser Role Editorの仕事です。 以下のように細かく権限が指定できる。

f:id:koyacch:20171223060702p:plain

本当は権限の指定だけで目的を達成したいのですが、例えば「固定ページ > 新規追加」の権限を消すことはできませんでした。 これ消そうとすると固定ページ自体の権限が失われます。メニューから消えます。

なので、極力、User Role Editorで権限ごと制限して、どうしても見えてしまうものをWP Admin UI Customizeで隠しました。

仕上がった構成はこんな感じ。

f:id:koyacch:20171223061046p:plain

Smart Slider メニューだけ残す必要があったので、管理者権限をクライアント権限にコピーし、いろいろ制限していきました。

最後に、特定の固定ページだけを編集させるためには、作成者をUser Role Editorで追加した権限ユーザーにしてしまえば、この権限ユーザーはこのページしか編集できなくなります。(みることはできる)

f:id:koyacch:20171223061840p:plain

あっ。 固定ページの権限を制限してるのが条件です。↓こんなふうに、自分のページしか触れないように制限しておく。

f:id:koyacch:20171223063610p:plain

以上でございます。

これで「やっちゃってよーなおしてよー」というイライラする依頼が減ります。

おわりに

年末でまだ終わってない案件があるのにこんなん書いてるよ。 年末年始は、家族と遊びながら、やっぱり空いた時間はコード触っちゃいそうです。