WordPressの管理画面をカスタマイズ!
WordPressのデフォルトの管理画面は、使わない機能やプラグインの管理メニュー画面など、管理者にとっては必要でも、編集者や投稿者には不要なものが多かったり、アクセスされて変更されると困ったりするものも多いですよね。何より、目的なものがパッと目に入らないのは使い勝手としては良くない……今回は、WordPressの管理画面をカスタマイズする話です。
実は、プラグインを使わないで子テーマ側でカスタマイズする方法の方が参考ページからコピペするだけなので簡単だったりもするのですが、保守管理の観点から見ると、保守管理しなくなった後、クライアント側で対応するときにカスタマイズできなくなってしまったり、元に戻す方法が分からなくなってしまうので、今回はプラグインで対応できる範囲のみ対応することにしました。
使用するプラグイン1「Admin Menu Editor」
日本語に対応しているようで、対応していないので分かりにくいですが、やりたいこととしては、【不要なものを非表示にしたい】だけなので、不要なメニューのところをクリックして「Extra capability」の欄に「管理者(administrator)」で設定していくだけでOKです。
たまにサブメニューも管理者にしないと消えないメニューもあるので、それだけご留意ください。(特に、プラグインが追加したメニュー)
画面で見たい方は、参考ページに画面スクリーンショット付きで載っているので、こちらを見ると分かりやすいです。
使用するプラグイン2「Ultimate Dashboard – Custom WordPress Dashboard」
管理者もいらなかったりする情報も多いので、共通で非表示にしているのですが、日本語はあまり対応しておらず、感覚で使うのは難しそうなので、使用方法について書くと、メニュー「Ultimate Dashboard」から「setting」を選択して「Remove Individual Widgets」から不要なものにチェックを入れるだけです。
もっと色々できますが、使用用途は【不要なものを非表示にしたい】だけなので、これで特に困らないはず。
使用するプラグイン3「User Role Editor」
キャッシュ系プラグインを入れているので、編集者もキャッシュクリアできないとトラブルを招いてしまいます。
そのため、編集者に一部の権限を付与するため、「User Role Editor」を導入します。
本当は独自の権限グループを作って対応した方がいいのですが、やりたかったことは一部だけなので、今回はそのまま「編集者」に対応しています。
設定方法は、「ユーザー」メニューの中にある「User Role Editor」を選択して、「編集者」の役割に対して「manage_options」にチェックを入れ、更新をするだけです。
ただ、これを有効にすると、編集者も設定変更できてしまうのでメニューは隠さないといけません。(実は、URLを入力したらアクセスできちゃうんだけど、そこまでするなら管理者権限付与でいいと思う)
隠せないものは上の「カスタマイズ」とかテーマの設定くらいなので、管理者からしたら「左側のメニューから設定しますね!」で対応できる。そのため、検証ツールを使ってIDを調べ、CSSで非表示にしました。CSSとJSを管理画面から対応できるプラグインを使用しているので、管理者からいつでも解除ができるようにしています。
権限についての説明は、次の参考ページが参考になると思う。
使用するプラグイン4「Gutenberg Block Manager」
ブロックエディタは多機能だし、見た目も分かりやすくなるので、たくさん活用してほしいところではあるけれど、たくさんありすぎると「何を使ったら良いのか分からなくなってしまった」ということが起きるし、「実際に使ってみたけど望んだ表示じゃないので何か指摘されそうな気がする」といったブロックも中にはあったりします。シンプルによく使うブロックだけでまとまっていた方が迷いにくいしトラブルに繋がりにくいので、思い切って非表示にして整理しました。
使用するプラグイン5「Admin Columns」
記事一覧画面の項目の並び順を使いたい順に並べ替えたり、正直に要らない項目があれば非表示にしたりして最適化します。
余計なデータが表示されていると、それだけで「難しそう!」と感じたり、ストレスに感じたりするので。
余談1「子テーマのfunctions.phpでカスタマイズしたもの」
実のところ、設定の有無が必要な要素はなるべくプラグインで対応し、管理画面上から変更できる状態にするのがベストだと考えている。
ただ、中にはプラグインが多すぎたり、「この設定をするなら、構造から見直してリニューアルしてくれ」といったものも一部あるので、そのときは子テーマのfunctions.phpでカスタマイズしている。
ただ、後に、コードスニペットプラグイン「Code Snippets」の存在を知ったので、以下の対応例だけなら、子テーマを作ることなく対応できると思う。
(対応例)
- WordPress 日付別一覧ページを生成させないようにする
- パーマリンクから「category」の削除と関連して対処するもの
- 固定ページ末尾のスラッシュありで統一するためのもの
- ログイン時以外はdashiconsファイルを無効にする
- お問い合わせ用の拡張(スパム対策、お問い合わせ完了ページへの遷移など)
- その他、SEOプラグインで重複してしまった設定を防ぐためのもの
ブログサイト以外では日付別一覧ページは不要と考えています。更に言うなら、日記じゃない限り、ブログサイトでもカテゴリー別で良いように思える。今は日記サイトとして公開するってことって少ないようにも思います。
保守管理をしていたとしても、管理者アカウントもきちんと用意した上で資料化等を行い、相手にも共有しています。
何かあって対応できなくなったら大変なので、こちらでも情報は持っていてもいいけど、権限は向こうにある(向こうにもある)状態がベストだと考えています。
余談2「トラブル編」
実は、「Custom Dashboard & Login Page – AGCA (AG Custom Admin)」を入れていたとき、何らかの形で干渉してしまっていたのか、様々なトラブルが発生してしまいました。便利なプラグインなので、バージョンアップで直っていると嬉しいです。
今は、このプラグインと他のプラグイン等が何らかの形で干渉したと発覚するまでが大変でした……。
トラブル1「自動でセッションが切れる、勝手にログアウトされるできごとが頻繁に発生する」
実際に体験すると、イラッとしますよ。原因が分かるまで何回か本気でキレかけた。
WordPressのログイン状態保持するための対策を色々試してみたけど、すべて効果がなく。
タブを変えたり戻ったりすると発生しやすく、セキュリティ対策プラグインやキャッシュ系プラグインは関係ない模様(機能をOFFにしても意味がなかった)
キャッシュ系プラグインを無効にしても効果はなく。このプラグインの利用をやめて以降は再発していません。
トラブル2「SWELLの見出しの出力ソースが見出しタグ(例:h2)にならず、divタグになってしまう(装飾が消えてしまう)」
デフォルトまたはセクションの設定をすると、CSSクラスが付与されるのですが、CSSクラスが付与されないときに発生します。
そのため、デフォルトまたはセクションを切り替えてから更新すると元に戻ります。頻発したんだけど、このプラグインを入れていないサイトでは何も起こりませんでした。このプラグインの利用をやめて以降は再発していません。
トラブル3「日々使っていると、表示や動作が重くなる…!」
こればかりは、このプラグインとは無関係でした。
更新・投稿頻度が高いサイトと今までほとんど関わっていなかったこと、重複クエリが発生していなかったので、気づいていなかっただけで、キャッシュ系プラグインの宿命といいますか、キャッシュデータの影響で重複クエリが増えてしまって重たくなってしまったようです。
SWELL特有の現象とは限らず、重複クエリが発生するなら発生する可能性は高いと見ています。
キャッシュ保持期間を1日にしていても変わらなかったので、たまにキャッシュクリアしてあげると良さそうです。
今回の話とはズレてきてしまうので、別のタイミングで高速化対応について触れるときにでも書こうかなと思います。
長い間ログインせず放置しているなら重くなっても自己責任ということで。
ご相談・お問い合わせをお待ちしています!
ホームページ制作・リニューアル・運用・SEO・Web集客、Webマーケティング・Webサイト制作技術・タスク・スケジュール・プロジェクト管理や業務改善のお悩みなどを遠慮なくご相談ください。
資料のダウンロードをご希望の方へご案内です
サービスのご利用を社内で検討したい方のために、実績やサービス概要、料金表などのクリエイトアコードの案内資料をPDFでダウンロードすることができます。ご自由にダウンロードください。