WordPressで管理画面の特定のページかどうかを判断するPHPスクリプト
目次
この記事を書いた背景
WordPressでプラグインを作る際、管理画面のみだったり、特定の管理ページでしか使わないコードをすべてのページで読み込ませるのは無駄な実行時間を使ってしまうので、なんだか精神衛生上よろしくないですよね。
そこで、管理画面のチェックを行う方法についてメモしておきます。
利用するコード
今回の状況を回避するには3つの技術が必要でした。
管理画面かどうかのチェック
WordPressで管理画面かどうかをチェックするには、is_admin() 関数を利用します。
この関数は、ダッシュボードや管理画面の表示中であればtrueを返します。
現在表示しているページのチェック
現在表示しているページが何かをチェックするには、管理用グローバル変数である $pagenow を利用します。
例えば、「投稿」や「固定ページ」であれば「edit.php」を返します。
参考:グローバル変数
途中で実行を中断するコード
上記のチェックの結果、if() によってPHPスクリプト全体を囲うのもコード的には間違っていませんが、正直 if() の入れ子はダサいと思います。
WordPressでプラグインを読み込むコードは、wp-settings.php 内に次のように書かれています。
// Load active plugins.
foreach ( wp_get_active_and_valid_plugins() as $plugin ) {
wp_register_plugin_realpath( $plugin );
include_once( $plugin );
}
有効なプラグインのみを include_once() で取りこんでいるわけです。
ここで、PHPスクリプトの実行を中断するコードとして retrun を使います。
return はグローバルスコープで利用すると実行中のスクリプトが終了してしまいますが、include や require されている場合は呼び出し元に制御が戻りますので、先のプラグインの読み込みコードを考えればループに戻ってくれるわけですね。
参考:return
完成版のコード
上記の3つのコードを組み合わせて考えます。
例えば、管理画面の「投稿」や「固定ページ」のみで利用するコードをプラグインで実現するには、プラグインの先頭で次の条件分岐コードを記述します。
if ( !is_admin() || ($pagenow != 'edit.php') ) {
return;
}
管理画面かどうか、もしくは現在のページが edit.php かどうか、の順で評価させてます。
まとめ
どの程度実行パフォーマンスに影響があるかはわかりませんが、入れ子の気持ち悪さは解消されているので自分的に満足しています。
WordPressのコアファイルのコードを読むというのもまた面白いですね。
10年集客し続けられるサイトを、ワードプレスで自作する9つのポイント プレゼント
あなたは、24時間365日、自分の代わりに集客し続けてくれるWebサイトを作りたい!と思ったことはありませんか?
私はこれまで500以上のWebサイトの構築と運営のご相談に乗ってきましたが、Webサイトを作ってもうまく集客できない人には、ある一つの特徴があります。
それは、「先を見越してサイトを構築していないこと」です。
Webサイトで集客するためには、構築ではなく「どう運用するか」が重要です。
しかし、重要なポイントを知らずにサイトを自分で構築したり、業者に頼んで作ってもらってしまうと、あとから全く集客に向いていないサイトになっていたということがよく起こります。
そこで今回、期間限定で
『10年集客し続けられるサイトをワードプレスで自作する9つのポイント』
について、過去に相談に乗ってきた具体的な失敗事例と成功事例を元にしてお伝えします。
・ワードプレスを使いこなせるコツを知りたい!
・自分にピッタリのサーバーを撰びたい!
・無料ブログとの違いを知りたい!
・あとで悔しくならない初期設定をしておきたい!
・プラグイン選びの方法を知っておきたい!
・SEO対策をワードプレスで行うポイントを知りたい!
・自分でデザインできる方法を知りたい!
という方は今すぐ無料でダウンロードしてください。
期間限定で、無料公開しています。
※登録後に表示される利用条件に沿ってご利用ください
“WordPressで管理画面の特定のページかどうかを判断するPHPスクリプト” に対して2件のコメントがあります。