検索キーワードを入力
カテゴリーを選択

WordPressグローバル変数の使い方や注意点・メリットなどについて徹底解説(サンプルコード付き)

投稿日:2024年12月11日(水)
WordPressグローバル変数の使い方や注意点・メリットなどについて徹底解説(サンプルコード付き)|UMENOKI|すぐに仕事で使えるIT技術情報メディア

みなさんこんにちは!エンジニアの高澤です!

今回はWordPressグローバル変数の使い方や注意点・メリットなどについて徹底解説していきたいと思います。

WordPressでは非常に多くのグローバル変数が用意されており、このグローバル変数を使うことで、どこからでもソースコードで呼び出してWordPressのデータベースにあるデータや、URLのパラメータ、また処理の中で得られる何かしらのデータを取得したりすることができます。

注意点はあるものの、使い方によっては非常に効率的にWordPressのテーマやプラグインを実装することができる一つのツールとなることと思いますので、よろしければぜひ当記事をお仕事などでご活用いただけましたら幸いです。

そもそもグローバル変数とは

プログラミングにおける「グローバル変数」とは、どこからでもアクセス可能な変数のことをいいます。

通常、変数にはスコープ(利用可能な範囲)が設定されていますが、グローバル変数はその制限がなく、プログラム全体で共有されます。

WordPressでは、システム全体で必要な情報を保持・共有するために多くのグローバル変数が用意されています。当記事ではこのグローバル変数についてチートシート的な形で解説いたします。

WordPressにおけるグローバル変数とは

WordPressでは、テーマやプラグインの開発を効率的に行うために、サイトの状態や投稿、ユーザー情報などを管理するグローバル変数が多数定義されています。

例えば、現在表示している投稿データは $post、データベース操作には $wpdb が利用されます。これらを活用することで、WordPressの動作やデータを柔軟に操作できます。

WordPressグローバル変数の公式ドキュメント

ここで、WordPressグローバル変数の公式ドキュメントをご共有させていただきます。

https://codex.wordpress.org/Global_Variables

もし当記事の情報が古くなってしまい実装がうまくいかないなどの事態が起こった場合、こちらの公式ドキュメントから情報をご確認いただければ間違いないと思いますので、当記事と併せてしっかりドキュメントの方もチェックしておきましょう。

WordPressグローバル変数のメリット・注意点

メリットとして、どの部分のコードからでも情報にアクセスできるため、柔軟な開発が可能になる点が挙げられます。

一方で、注意点としては、意図せず値を上書きしてしまうと、Webサイト全体の挙動に影響を与える可能性があるため、適切な管理が必要です。

ここではグローバル変数を使用する際の注意点として、以下の2点が考えられます。

  • 必要な場合のみ使用する
  • 名前の衝突を防ぐ

それぞれ解説いたします。

必要な場合のみ使用する

WordPressのグローバル変数を安全に扱うにはいくつか注意点があります。

一つは「必要な場合のみ使用する」ことです。

グローバル変数は非常に便利ですが、WordPressが提供するAPIであるWordPress専用のテンプレートタグ(例: get_post()get_user_meta())を優先して使用することで、グローバル変数の直接操作を減らすことができその分安全に機能の実装ができます。

もちろんケースバイケースですが、できるだけテンプレートタグを積極的に使用しましょう。

名前の衝突を防ぐ

またもう一つは、「名前の衝突を防ぐ」ことです。
他のテーマやプラグインと変数が衝突しないよう、WordPressが定義したもの以外は避けましょう。

例えば、PHPでの独自の変数を定義してデータを代入する一文は頻繁に記述することがあるかと思いますが、ここの代入先の変数で、WordPressのグローバル変数である「$post」や「$wpdb」という変数名を通常の処理として利用してしまうと、WordPress自体の処理の中で必要なグローバル変数の本来あるべきデータが上書きされてしまい、処理がおかしくなってしまいます。

グローバル変数は強力なツールですが、これらの注意点を守ることで、安全かつ効率的に開発を進められます。

WordPressグローバル変数の使い方

WordPressグローバル変数の使い方について解説します。

グローバル変数を使用するには、いくつかの基本的なルールを理解しておく必要があります。
ここでは基本的な使い方と具体例を解説いたします。

グローバル変数の呼び出し方

WordPressに限らずPHPプログラミングでは、関数内でグローバル変数を使う場合、global キーワードを使って明示的に宣言する必要があります。これにより、スコープ外にある変数にアクセスできます。

global $wpdb;
$results = $wpdb->get_results("SELECT * FROM wp_posts WHERE post_status = 'publish'");

上記コードは、WordPressが提供する $wpdb を利用して、公開された投稿を取得しています。

よく使われるグローバル変数の使用例

以下のコードは、現在の投稿データにアクセスするための変数である$postの使用例です。主にループ内で使用します。

global $post;
echo $post->post_title; // 投稿タイトルを表示

以下のコードは、WordPressデータベースを操作するためのクラスインスタンスである$wpdbの使用例です。SQLクエリを直接実行できます。

global $wpdb;
$table_name = $wpdb->prefix . 'custom_table';
$results = $wpdb->get_results("SELECT * FROM $table_name");

以下のコードは、現在のクエリ情報を保持するクラスインスタンスである$wp_queryの使用例です。テンプレート内で条件を確認したり、データを取得する際に利用します。

global $wp_query;
if ($wp_query->is_home) {
    echo 'This is the homepage.';
}

以下のコードは、ループ内で現在の投稿の投稿者データにアクセスできる$authordataの使用例です。

global $authordata;
echo $authordata->display_name; // 投稿者の表示名を取得

このように、WordPressのグローバル変数は、データベース操作や投稿データの取得、状態確認などに便利です。

ただし、使用は最小限に抑え、WordPressが提供する関数(テンプレートタグ)を優先することが推奨されます。正しく使えば、効率的なテーマやプラグイン開発を実現できます。

WordPressグローバル変数一覧

それでは早速、WordPressグローバル変数一覧について解説したいと思います。

主に使用されているグローバル変数を一覧でおまとめしましたので、よろしければお仕事などで繰り返しご活用いただきたくさんカンニングしていただければと思います。

ループ内で利用できる変数 (Inside the Loop Variables)

現在の投稿関連

$post現在処理している投稿のオブジェクト(WP_Postクラス)。
利用例: $post->ID で現在の投稿IDを取得。
$posts一部のコア関数で使用される変数。現在のクエリ結果を保持する場合があるが、一般的には $wp_query->posts を使用する。
$authordata現在の投稿の投稿者に関する情報(WP_Userオブジェクト)。
利用例: $authordata->display_name で投稿者の表示名を取得。

投稿の日時とページ分割関連

$currentday現在の投稿が公開された日(例: 05)。
$currentmonth在の投稿が公開された月(例: 12)。
$page現在表示しているページ番号。投稿内で分割されたページを識別するために使用。
$pages投稿が複数ページに分割されている場合、各ページのコンテンツを格納した配列。
$multipage投稿が複数ページに分割されているかどうかを示すフラグ(true または false)。
$more投稿内の <!--more--> タグを有効にするかどうかを制御するフラグ。
$numpages現在の投稿が持つページの総数。

ブラウザ検出フラグ (Browser Detection Booleans)

現在のブラウザを特定するための変数

$is_iphoneiPhoneのSafariブラウザを使用中か。
$is_chromeGoogle Chromeを使用中か。
$is_safariSafariブラウザを使用中か。
$is_geckoFirefoxを使用中か(Geckoベースのブラウザ)。
$is_IEInternet Explorerを使用中か。
$is_edgeMicrosoft Edgeを使用中か。

その他、以下のような古いブラウザ検出用フラグも含まれますが、現在は非推奨です。

$is_NS4(Netscape 4)、$is_opera(Opera)、$is_macIE(Mac版IE)、$is_winIE(Windows版IE)、$is_lynx(Lynx)。

Webサーバー検出フラグ (Web Server Detection Booleans)

WordPressが動作しているサーバーを特定するための変数

$is_apacheApacheサーバー上で動作しているか。
$is_IISMicrosoft IIS(Internet Information Services)で動作しているか。
$is_iis7IISバージョン7.xで動作しているか。
$is_nginxNginxサーバー上で動作しているか

バージョン情報 (Version Variables)

WordPressや関連ソフトウェアのバージョンを確認するための変数

$wp_version現在インストールされているWordPressのバージョン(例: 6.4)。
$wp_db_versionWordPressデータベースのバージョン番号。アップデート時の確認に使用。
$tinymce_versionインストールされているTinyMCEエディターのバージョン。
$manifest_versionキャッシュマニフェストのバージョン番号。
$required_php_version現在のWordPressに必要なPHPのバージョン。
$required_mysql_version 現在のWordPressに必要なMySQLのバージョン。

その他の重要なグローバル変数

サイト全体で利用される変数

$super_adminsサイト管理者(マルチサイト用)のユーザーIDを格納した配列。
$wp_query現在のクエリを保持する WP_Query クラスのインスタンス。テンプレート内で条件分岐に使う(例: $wp_query->is_home)。
$wpdbデータベース操作用クラス(wpdb)。SQLクエリの実行やテーブル操作に使用。
$wp_rewriteURLリライトルールを管理するクラスインスタンス。カスタムリライトルール作成時に使用。
$wp_locale現在のロケール(地域設定)に関する情報を保持するクラスインスタンス。日付や時刻の形式を制御。
$wp_admin_bar管理バー(管理者ツールバー)に関する情報を管理する WP_Admin_Bar オブジェクト。
$wp_rolesすべてのユーザーロールを格納する WP_Roles クラスのインスタンス。
$wp_meta_boxes管理画面のメタボックス(カスタムボックス)の情報を格納する配列。

管理画面専用の変数 (Admin Globals)

$pagenow現在表示している管理画面のページ名(例: post.php, edit.php)。
$post_type現在の投稿タイプ(例: post, page, custom_post_type)。
$allowedposttags / $allowedtags投稿コンテンツで許可されるHTMLタグのリストを格納した配列。
$menu管理画面のメニュー構造を格納した配列。

そのほか便利なグローバル変数

$query_string現在のクエリ文字列を含む文字列。
$table_prefixWordPressのデータベーステーブルのプレフィックス。デフォルトは wp_
$template現在使用されているテンプレートファイルのパス。
$wp_scripts登録されたスクリプトのリストを管理する WP_Scripts クラスのインスタンス。
$wp_styles登録されたスタイルのリストを管理する WP_Styles クラスのインスタンス。
$current_user現在ログインしているユーザーのデータを含むオブジェクト。
: $current_user->user_login でユーザー名を取得。
$user_ID現在のユーザーのID(古い方法)。$current_userを使用するのが推奨されます。
$wp_theme_directoriesテーマが保存されているディレクトリのリスト。

まとめ

WordPressのグローバル変数についての解説は以上になります。

WordPressには非常に多くのグローバル変数が用意されており、これらを活用することで、WordPressのデータベース情報やURLパラメータ、処理中のデータを効率的に取得・操作できます。

グローバル変数を正しくに使用すれば、テーマやプラグインの開発を効率化する強力なツールとなります。注意点を守りながら、ぜひ当記事を実務やプロジェクトで役立てていただければ幸いです。

執筆者

UMENOKI編集部 高澤 翔汰

歴5年目(2024年8月以降から5年目です)のエンジニアです!
CMSでのサイト構築とWebデザイン制作を兼任して5年目になります。
自作のiOSアプリ(iPhoneアプリ)やWordPressプラグインを開発することもあり、まだまだ現在進行形で勉強中です!

お気軽に皆さんのご要望をお聞かせください!

どんなに些細なことでも構いません!よろしければ記事や当サイトへの「こんな記事があったら仕事とかで役に立つな〜」や「こうだったらもっと役に立つのに!」といったようなご要望等をお気軽にお聞かせください!今後のサービス改善にお役立てさせていただきます!

例1)Reactの技術記事を書いてほしい!
例2)WordPressの使い方とかを初心者向けに解説してほしい!...など

送信と同時にプライバシーポリシーに同意したものとします。
正月