WordPress は長く続いている web サイト作成ツールです。プログラミングの知識がなくとも様々なデザインと構成の web サイトを作ることができ、多くの場所で使われています。
WordPress.com: 無料のサイトやブログを作成
WordPress はテーマ、プラグインというライブラリを WordPress に組み込む仕組みがあり、これと本体は主に PHP と JavaScript で作られています。
WordPress Themes — WordPress.com
ご利用の WordPress.com サイトにプレミアムおよび無料の WordPress プラグイン
WordPress の歴史は長く(2003年から現在も続いています)、その歴史は composer、npmといったパッケージ管理ツール(それぞれPHP、JavaScriptのパッケージ管理ツール)よりも長いです。そのためかオートローダ等のどのファイルをいつ読み込むといった仕組みが WordPress 独特のものになっています。これにより新しいPSRやオートローダに頼った開発ができず、グローバル化の名前を気にするコーディングが必要になります。特に PHP コードを埋め込むことになるプラグインではグローバル化の既存コードを破壊しやすく、特に気にしなければなりません。次にある WordPress 直々のプラグイン開発者のベストプラクティスにも同じことが書いてあります。
Best Practices | Plugin Developer Handbook | WordPress Developer Resources
クラスによるプラグイン定義でオブジェクト定数を活用するとこの名前問題をそう気にしなくてよくなります(完璧ではないし、結局コードが WordPress でないモノより増えるのはいかんともしがたいです)
例は次です。
// WordPress プロセス初期化時に HogePluginIndex クラスの静的メソッド init を実行 // @see https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7 add_action( 'init', 'HogePluginIndex::init' ); class HogePluginIndex { // プラグイン固有の文字列。接頭辞などに使用 public const PLUGIN_ID = 'HogePluginIndex'; // ↑の定数を使ってプラグインは以下で使用するキー文字列を都度定義 public const CONF_HOGEHOGE_KEY = self::PLUGIN_ID . '_hogehoge'; public const HOGE_FORM_KEY = self::PLUGIN_ID . '_im_hoge_form'; // WordPress 初期化時に実行するメソッド。この中でインスタンス化前の準備を色々 // プラグインによる処理の必要がないならこの時点でインスタンス化せずに処理を終了する方が良い // 条件式が増えやすい。コンストラクタ内の小分けしてある条件式をまとめる必要があるのでここの処理終了は開発者に優しくない public static function init(){ new self();// コンストラクタの中このクラスのインスタンスを用いる WordPress のアクション(JavaScriptでいうイベント的な)を定義 } // コンストラクタ。インスタンス内部の前処理。ここまでの間にアクションを定義しきると整理しやすい public function __construct() { if ( is_admin() && is_user_logged_in() ) { // ログイン済みで管理者ならば管理者メニューメソッド admin_menu を実行 add_action( 'admin_menu', [ $this, 'admin_menu' ] ); } // リクエストされたページのURLがあらかじめ保存した設定値と一致したならば JavaScript 呼び出しメソッドの hook_script を実行 if ($_SERVER['REQUEST_URI'] === get_option( self::CONF_HOGEHOGE_KEY )) { add_action( 'wp_enqueue_scripts', [ $this, 'hook_script' ] ); } // 特定のキーを持つリクエストがPOSTされたならば、フォームリクエストの操作メソッド _handling_form_request を実行 if ( isset( $_POST['form-hook-action'] ) && $_POST['form-hook-action'] === self::HOGE_FORM_KEY ) { $this->_handling_form_request(); } } }
上記の様にオブジェクト定数でキーを一定の法則で定義し、都度使用することで既存他コードとの衝突を避けられます。加えて定数のためIDEの予測補完が効き、ポチポチ+Tabキーですぐに入力できます。注意点としてこの init メソッド、コンストラクタは常に実行される、という点があります。きっちり実行すべきタイミングで実行すべき処理のみを行えるように条件式を用意しなければ WordPress が作成したプラグインに関係ない部分で重くなります。