WordPressで用意された定数とPHPのマジック定数について解説(サンプルコード付き)

投稿日:2024年09月16日(月) 更新日:2024年11月04日(月)
WordPressで用意された定数とPHPのマジック定数について解説(サンプルコード付き)|UMENOKI|すぐに仕事で使えるIT技術情報メディア

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

今回はWordPressで用意された定数とPHPのマジック定数について解説していきたいと思います。

WordPressにはシステム全体で使用することができる定数をあらかじめ用意しており、この定数を使用することで、プログラムの品質向上や効率化に役立てることができます。

また、PHPにもマジック定数という便利な定数もあるため、このWordPressの定数とPHPのマジック定数を使いこなすことで保守性の高いテーマやプラグインを開発することができるようになっています。

当記事では、そんなWordPressの定数とPHPのマジック定数を解説し、チートシートとしてWordPress構築案件にお役立てできるように構成しております。

よろしければぜひお役立ていただけましたら幸いです。

WordPressの定数とは

WordPressの定数とは、あらかじめWordPressによって用意されたシステム全体で利用するために定義された定数のことをいいます。(グローバル定数とも呼ばれることもあります)

定数は変更ができない値を一度設定し、サイト全体やプラグイン・テーマなどで共通して使用する際に役立ちます。

WordPressには、デフォルトで多くの定数が用意されており、それらはサイトの設定や動作をカスタマイズしたり、サーバー環境に応じた挙動を制御するために使用されます。

このWordPressの定数は、サイトの挙動を効率的に制御し、カスタマイズや管理を簡単にするために重要です。適切に使用することで、セキュリティやパフォーマンス、メンテナンスの面での最適化が可能になり、特に複数の環境やサーバーにまたがるサイト管理で役立ちます。

PHPのマジック定数とは

PHPのマジック定数は、スクリプトが実行される際にその値が動的に変化する特殊な定数です。

これらの定数は、コードの中で特定の情報(ファイル名、行番号、関数やクラスの名前など)を自動的に取得するために使われます。PHPのマジック定数は大文字で、通常は2つのアンダースコアで始まり、特定の文脈におけるスクリプトのメタ情報を提供します。

マジック定数は、スクリプトのメタ情報を動的に取得できるため、ファイルやクラス、関数に関する情報を効率的に扱うのに役立ちます。

特に大規模なプロジェクトやフレームワークの開発、デバッグ時に広く使用されています。WordPress開発では、__FILE____DIR__ を使ってプラグインやテーマのディレクトリ構造を動的に管理することが一般的です。

PHPのマジック定数については以下公式ページからチェックできるので、よろしければご確認ください。

https://www.php.net/manual/ja/language.constants.magic.php

wp-config.phpとは

wp-config.phpとは、WordPressの最も重要な設定ファイルの一つで、WordPressのインストールと動作に関する基本的な設定を定義するPHPファイルのことをいいます。

このwp-config.phpは、WordPressのサイトがどのように動作するかを制御する非常に重要な設定ファイルです。特に、サーバーの接続情報やセキュリティ設定、デバッグオプション、パフォーマンス設定などが含まれ、これを通じてサイトの動作やパフォーマンスを管理できます。

このファイルは、以下のイメージのようにWordPressのルートディレクトリに配置されており、サイトごとにカスタマイズ可能です。よろしければ確認してみてください。

/var/www/html/wordpress/wp-config.php

※上記は一般的なレンタルサーバーなどのApacheサーバー (一般的なホスティング環境)を前提としております。
※レンタルサーバー (例: Xserver, ConoHa VPS, Sakuraなど)の場合

Xserver の場合:
/home/ユーザー名/ドメイン名/public_html/wp-config.php

ConoHa VPS の場合:
/var/www/ドメイン名/html/wp-config.php

ちなみにwp-config.phpを編集する際は慎重に行い、バックアップを取ってから変更することが推奨されます。間違った設定や記述ミスがあると、サイト全体が動作しなくなる可能性がありますので、くれぐれも注意して取り扱ってください。

WordPressの定数

それでは早速、WordPressの定数について解説していきます。

WordPressの定数をカテゴリ分けすると以下になるかと思います。

  • パスやURLに関する定数
  • デバッグ機能を制御する定数
  • メモリとパフォーマンスに関する定数
  • ファイル編集・自動更新に関する定数
  • セキュリティ関連の定数
  • その他の便利な定数

それぞれ解説させていただきます。

パスやURLに関する定数

パスやURLに関する定数は、WordPressのシステム内でパスやURLを明確に指定するために使われます。通常、wp-config.php などの設定ファイルや、プラグイン・テーマのファイルで定義されます。

たとえば、WordPressのインストールディレクトリを指定する定数を使うと、複数の環境で簡単に移行や再配置が可能になります。

また、プラグインやテーマのファイルパスを指定する定数を使うことで、テーマやプラグインの動的な読み込みや、URLの絶対パスを生成するのに役立ちます。これはコードの再利用性や柔軟性を高め、サイトのメンテナンスを容易にします。

以下解説する定数は、PHPファイルの必要な箇所に記述して使用します。

ABSPATH

WordPressのインストールディレクトリのパス。

echo ABSPATH;

// 出力例: "/path/to/wordpress/"

WP_CONTENT_DIR

wp-contentディレクトリのパス。

echo WP_CONTENT_DIR;

// 出力例: "/path/to/wordpress/wp-content"

WP_CONTENT_URL

wp-contentディレクトリのURL。

echo WP_CONTENT_URL;

// 出力例: "https://example.com/wp-content"

WP_PLUGIN_DIR

プラグインディレクトリのパス(通常は wp-content/plugins)。

echo WP_PLUGIN_DIR;

// 出力例: "/path/to/wordpress/wp-content/plugins"

WP_PLUGIN_URL

プラグインディレクトリのURL。

echo WP_PLUGIN_URL;

// 出力例: "https://example.com/wp-content/plugins"

PLUGINDIR

プラグインフォルダのパス。WordPress 2.6以降は WP_PLUGIN_DIR を使用することが推奨されます。

echo PLUGINDIR;

// 出力例: "wp-content/plugins"

WPMU_PLUGIN_DIR

マスタープラグインディレクトリのパス(mu-pluginsフォルダ)。

echo WPMU_PLUGIN_DIR;

// 出力例: "/path/to/wordpress/wp-content/mu-plugins"

WPMU_PLUGIN_URL

マスタープラグインディレクトリのURL。

echo WPMU_PLUGIN_URL;

// 出力例: "https://example.com/wp-content/mu-plugins"

TEMPLATEPATH

現在のテーマのテンプレートディレクトリのパス。

echo TEMPLATEPATH;

// 出力例: "/path/to/wordpress/wp-content/themes/your-theme"

STYLESHEETPATH

現在の子テーマのスタイルシートディレクトリのパス(子テーマが使用されている場合)。

echo STYLESHEETPATH;

// 出力例: "/path/to/wordpress/wp-content/themes/your-child-theme"

デバッグ機能を制御する定数

WordPressのデバッグ機能を制御する定数は、開発中にエラーを素早く特定したり、詳細なエラーログを保存してバグ修正を行う際に役立ちます。

例えば、WP_DEBUG などの定数は、デバッグモードを有効化し、エラーメッセージや警告をブラウザに表示します。これにより、コードの問題箇所を迅速に発見できます。

また、WP_DEBUG_LOG を使用すると、エラーログをファイルに保存し、サイトの稼働中に発生した問題を後で確認できます。

以下解説する定数は、主に開発環境で wp-config.php ファイルに記述して設定していただき、本番環境では無効にするのが一般的です。

WP_DEBUG

WordPressのデバッグモードを有効にする。true にするとエラーメッセージなどが表示される。

define( 'WP_DEBUG', true );

WP_DEBUG_DISPLAY

デバッグ情報を画面に表示するかどうかを指定。

define( 'WP_DEBUG_DISPLAY', false ); // ログファイルには書くが、画面には表示しない

WP_DEBUG_LOG

エラーや警告のログをwp-content/debug.logに記録します。WP_DEBUGtrueである場合に有効です。

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);

SCRIPT_DEBUG

圧縮されていないJavaScriptおよびCSSファイルを読み込むために使用される。

define( 'SCRIPT_DEBUG', true );

SAVEQUERIES

データベースクエリの情報を保存し、デバッグに利用できる。

define( 'SAVEQUERIES', true );

WP_DEVELOPMENT_MODE

開発モードを有効にします。trueにすると、デバッグ情報がより詳細になります。

define('WP_DEVELOPMENT_MODE', true);

上記定数については以下の公式ページでも解説しておりますので、よろしければお役立てください。

メモリとパフォーマンスに関する定数

メモリとパフォーマンスに関する定数は、WordPressがサーバーリソースをどの程度使用できるかを制御します。

例えば、WP_MEMORY_LIMIT を設定することで、サイトが使用できるメモリの上限を指定できます。これにより、大規模なサイトやプラグインを使用している場合でも、メモリ不足によるエラーを防ぐことができます。

また、SAVEQUERIES を有効にすると、データベースクエリの実行時間を計測して保存することができ、パフォーマンスのボトルネックを分析する際に役立ちます。これらの設定は、特にリソース消費の多いサイトでのパフォーマンス最適化に役立ちます。

以下解説する定数は、主に wp-config.php ファイルに記述します。

WP_MEMORY_LIMIT

WordPressのPHPメモリ制限。

define( 'WP_MEMORY_LIMIT', '256M' );

WP_MAX_MEMORY_LIMIT

管理画面用のメモリ制限。

define( 'WP_MAX_MEMORY_LIMIT', '512M' );

WP_CACHE

キャッシュ機能を有効化する。

define( 'WP_CACHE', true );

ファイル編集・自動更新に関する定数

WordPressには、テーマやプラグインを管理画面から直接編集できる機能や、自動更新機能が備わっていますが、これらを制御する定数があります。

例えば、DISALLOW_FILE_EDIT を設定すると、管理画面からテーマやプラグインのファイルを編集できなくすることができます。これにより、誤ってコードを変更してサイトが破損するリスクを防げます。

また、AUTOMATIC_UPDATER_DISABLED を使用して、自動更新機能を無効化することで、更新に伴う予期せぬ不具合を避け、安定した運用を継続できます。

これらの定数は、特にセキュリティ意識の高いサイトや管理が厳格なサイトで重要です。

以下解説する定数は、主に wp-config.php ファイルに記述します。

DISALLOW_FILE_EDIT

管理画面からのテーマ・プラグイン編集を無効化。

define( 'DISALLOW_FILE_EDIT', true );

DISALLOW_FILE_MODS

管理画面からのファイル変更(テーマやプラグインのインストール、更新、削除)を無効化。

define( 'DISALLOW_FILE_MODS', true );

AUTOMATIC_UPDATER_DISABLED

自動アップデートを無効化。

define( 'AUTOMATIC_UPDATER_DISABLED', true );

WP_AUTO_UPDATE_CORE

コアの自動アップデートを制御する。

define( 'WP_AUTO_UPDATE_CORE', false ); // 無効
define( 'WP_AUTO_UPDATE_CORE', true );  // 有効

セキュリティ関連の定数

セキュリティ関連の定数は、WordPressサイトの安全性を強化するために使用されます。

例えば、FORCE_SSL_ADMIN を設定すると、管理画面の全通信をSSL(HTTPS)に限定することができます。これにより、認証情報が暗号化され、安全性が向上します。

また、DISALLOW_UNFILTERED_HTML を設定すると、特権のないユーザーがHTMLやスクリプトを投稿することを防止でき、クロスサイトスクリプティング(XSS)攻撃などのリスクを低減できます。

これらの定数は、特に複数のユーザーがアクセスするサイトや、セキュリティが重要なサイトで必須となります。

以下解説する定数は、主に wp-config.php ファイルに記述します。

FORCE_SSL_ADMIN

管理画面へのアクセスをSSL(https)に強制する。

define( 'FORCE_SSL_ADMIN', true );

DISALLOW_UNFILTERED_HTML

管理者でもフィルタリングされていないHTMLを使用できないようにする。

define( 'DISALLOW_UNFILTERED_HTML', true );

その他の便利な定数

WordPressの運用に役立つ様々な定数があります。たとえば、WP_POST_REVISIONS を使用すると、投稿のリビジョンを保存する回数を制限できます。これにより、データベースが不要に膨張するのを防ぎます。

また、EMPTY_TRASH_DAYS を設定することで、ゴミ箱に移動したアイテムが自動削除されるまでの期間を管理でき、サイトのメンテナンスを効率化できます。

これらの定数は、サイトの運用管理を簡略化し、長期的なパフォーマンスやストレージ管理に役立つため、メンテナンスが重要なサイトで多用されます。

以下解説する定数は、主に wp-config.php ファイルに記述します。

WP_HOME

サイトのホームURLを強制的に指定。

define( 'WP_HOME', 'https://example.com' );

WP_SITEURL

WordPressのインストールURLを指定。

define( 'WP_SITEURL', 'https://example.com/wordpress' );

MULTISITE

WordPressのマルチサイト機能を有効化する。

define( 'MULTISITE', true );

SUBDOMAIN_INSTALL

マルチサイトでサブドメイン型を使用する場合に指定。

define( 'SUBDOMAIN_INSTALL', true );

これらの定数は、wp-config.php ファイルやテーマ、プラグインの中で設定することができ、WordPressの動作や環境をカスタマイズするために使用されます。

CONCATENATE_SCRIPTS

スクリプトを1つのファイルに結合するかどうかを制御します。デフォルトはtrueですが、デバッグ時はfalseに設定します。

define('CONCATENATE_SCRIPTS', false);

COMPRESS_SCRIPTS

サーバーがスクリプトを圧縮して送信するかどうかを指定します。

define('COMPRESS_SCRIPTS', true);

COMPRESS_CSS

CSSファイルを圧縮して送信するかどうかを指定します。

define('COMPRESS_CSS', true);

WP_ENVIRONMENT_TYPE

環境の種類(local, development, staging, productionなど)を指定します。環境によって異なる設定を行う際に使用します。

define('WP_ENVIRONMENT_TYPE', 'development');

DB_CHARSET

データベーステーブルの文字セットを指定します。通常はutf8mb4を使用します。

define('DB_CHARSET', 'utf8mb4');

DB_COLLATE

データベースの照合順序を指定します。通常は空にします。

define('DB_COLLATE', '');

PHPのマジック定数

PHPのマジック定数とは、PHP自体が提供する定数のことをいいます。WordPressでもよく使用されます。

PHPのマジック定数は、スクリプトの特定の情報(ファイルパス、行番号、関数名など)を取得するために用意された特殊な定数です。

これらの定数は、スクリプトが実行されるときに自動的にその値が変化します。以下によく使われるマジック定数について解説します。

以下解説する定数は、PHPファイルの必要な箇所に記述して使用します。

__FILE__

現在のファイルの絶対パスを示します。この定数は、ファイルの位置を取得するために使用されます。

echo __FILE__;

// 出力例: /path/to/your-plugin/your-plugin.php

__DIR__

現在のファイルの絶対パスを示します。この定数は、ファイルの位置を取得するために使用されます。

echo __DIR__;

// 出力例: /path/to/your-plugin/

__LINE__

現在の行番号を示します。この定数は、デバッグ目的でどの行で実行されているかを確認するのに役立ちます。

echo __LINE__;

// 出力例: 実行された行番号(例えば、15)

__FUNCTION__

現在実行されている関数の名前を取得します。関数内で使うと、その関数名を返します。

<?php
function testFunction() {
    echo __FUNCTION__;
}
testFunction();

// 出力例: testFunction

__CLASS__

現在のクラスの名前を取得します。クラス内で使用するとそのクラス名を返します。

<?php
class TestClass {
    public function showClass() {
        echo __CLASS__;
    }
}
$obj = new TestClass();
$obj->showClass();

// 出力例: TestClass

__METHOD__

現在のクラスのメソッド名を取得します。

<?php
class TestClass {
    public function showMethod() {
        echo __METHOD__;
    }
}
$obj = new TestClass();
$obj->showMethod();

// 出力例: TestClass::showMethod

__NAMESPACE__

現在の名前空間を取得します。名前空間を使用している場合に有効です。

<?php
namespace MyNamespace;
echo __NAMESPACE__;

// 出力例: MyNamespace

__TRAIT__

現在のトレイト名を返します。トレイトはクラスに挿入可能な再利用可能なコードのセットです。PHP5.4.0以降で導入されました。

<?php
trait TestTrait {
    public function printTraitName() {
        echo __TRAIT__;
    }
}
class TestClass {
    use TestTrait;
}
$obj = new TestClass();
$obj->printTraitName();

// 出力例: TestTrait

これらの定数は、プログラムのメタデータを簡単に取得するのに役立ち、特にデバッグやログ出力、ファイルパスの管理など、さまざまな場面で活用されます。

__FILE____DIR__ はWordPress開発において、テーマやプラグインのパスを取得するためによく利用され、デバッグ用に __LINE____FUNCTION__ も役立ちます。

まとめ

今回は、WordPressで用意された定数とPHPのマジック定数について解説いたしました。

WordPressの定数とPHPのマジック定数をうまく使いこなしていただくことで、保守性が高く効率的なコードでテーマやプラグインを開発することができます。

チートシートとしていつでも開発中にカンニングできるように構成しておりますため、繰り返し何度でもお使いいただけるようにしております。

ぜひお仕事などでお役立ていただけましたら幸いです。

執筆者

UMENOKI編集部 高澤 翔汰

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

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

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

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

送信と同時にプライバシーポリシーに同意したものとします。
サンタさん