WordPressで用意された定数とPHPのマジック定数について解説(サンプルコード付き)
みなさんこんにちは!エンジニアの高澤です!
今回は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_DEBUG
がtrue
である場合に有効です。
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のマジック定数をうまく使いこなしていただくことで、保守性が高く効率的なコードでテーマやプラグインを開発することができます。
チートシートとしていつでも開発中にカンニングできるように構成しておりますため、繰り返し何度でもお使いいただけるようにしております。
ぜひお仕事などでお役立ていただけましたら幸いです。
お気軽に皆さんのご要望をお聞かせください!
どんなに些細なことでも構いません!よろしければ記事や当サイトへの「こんな記事があったら仕事とかで役に立つな〜」や「こうだったらもっと役に立つのに!」といったようなご要望等をお気軽にお聞かせください!今後のサービス改善にお役立てさせていただきます!
例1)Reactの技術記事を書いてほしい!
例2)WordPressの使い方とかを初心者向けに解説してほしい!...など