WordPressの編集者権限にテーマオプションの一部だけ与えたい

WordPress案件を納品するとき、お客さん(サイト運営者)にどのようなユーザー権限を与えるだろうか?
私は編集者権限をお渡しすることが多い。お客さんは記事を書きつつ、たまに固定ページを編集するのがメインの作業となる。そういったふだんの作業をするには、操作できる項目が少ない編集者権限がよいと思う。ダッシュボードはシンプルになり、まちがった操作も減るだろう。

ダッシュボードのメニューで見ると、編集者権限では以下が表示されなくなる。

  • 外観
  • プラグイン
  • ユーザー(かわりにプロフィール)
  • 設定

管理者のダッシュボード
user-role-admin

編集者のダッシュボードはメニュー少なめ
user-role-editor

編集者権限にテーマオプション

今回は、テーマオプションにトップページの[ヘッダースライダー]がある。この画像だけ、お客さんが差し替えできるようにしたかった。
編集者権限にテーマオプションを与えるには、該当のテーマが選択されたときに edit_theme_options権限を与える。この設定はデータベースに保存されるため、テーマが有効化された after_switch_themeアクションで1回だけ行えばよい。

編集者に[外観]メニューが追加された。
user-role-theme

テーマが無効化された際にはもとに戻しておく必要もある。

[外観]メニューを消す

編集者権限で[外観]メニューが表示されるようになった。
とはいえ[外観]の中には、[ウィジェット][メニュー][ヘッダー]など、お客さんにはいじられたくない項目もある。やっぱり[外観]を消してしまいたい。

user-role-many

矛盾するようだけど…いったん[外観]を消してみた。

ついでに[コメント][ツール][更新]メニューも、お客さんにクリックされるとややこしいので消した。

user-role-remove

[テーマオプション]メニューを追加

[外観]メニューは消えたものの、先に権限は与えている。導線を貼れば編集者権限でテーマオプションをいじれるはずだ。前述と同じ admin_menuアクションを利用して、独自のメニューを追加する。

ダッシュボードに[テーマオプション]メニューが表示された。クリックすると、直接テーマのカスタマイズページに遷移する。手順も少ないほうがいい。

user-role-option

メニューやウィジェットがカスタマイズできないように

さて、[テーマオプション]メニューをクリックするとこの画面が表示されるようになった。

user-role-theme-option

このなかにも、該当案件では不要な項目がある。

  • サイト基本情報
  • ヘッダー画像
  • 背景画像
  • ホームページ設定
  • 追加CSS

削除しよう。
さらに、管理者権限以外はカスタマイズ不可にしたい項目もある。

  • メニュー
  • ウィジェト

これらを非表示にするには、customize_registerアクションを利用する。
項目はテーマによるが、だいたい以下のかんじ。
[メニュー]を非表示にする場合だけ少し方法が異なる。

編集者権限でいじれるのは、テーマオプションの[ヘッダースライダー]のみとなった。
user-role-slider

かなりスッキリした!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください