【WordPress】プラグインのパスやURLを取得する方法
WordPressのプラグイン開発でつまずきがちな、パスやURLを取得する方法をまとめました。
プラグインのパスやURLを取得する
以下のphpファイル内で記述した場合、どのように返されるかを見ていきます。
my-plugin
>my-plugin-file.php
plugin_dir_path( __FILE__ )
ファイルが存在するディレクトリのサーバーパスを返します。
/home/user/example.com/public_html/wp-content/plugins/my-plugin/
plugin_dir_url( __FILE__ )
ファイルが存在するディレクトリのURLを返します。
https://example.com/wp-content/plugins/my-plugin/
plugins_url( ”, __FILE__ )
ファイルが存在するディレクトリのURL(スラッシュなし)を返します。
https://example.com/wp-content/plugins/my-plugin
第一引数に任意のパスを指定するとURLの末尾に追加され、ディレクトリからの相対パスとして返されます。
例:plugins_url( '/', __FILE__ )
https://example.com/wp-content/plugins/my-plugin/
↑plugin_dir_url( __FILE__ )
と同じ結果になりました。
例:plugins_url( 'js/script.js', __FILE__ )
https://example.com/wp-content/plugins/my-plugin/js/script.js
plugins_url()
引数を省略すると、プラグインディレクトリのURLを返します。
https://example.com/wp-content/plugins
__FILE__とはなんぞや
__FILE__
は、PHPで使用される特別なマジック定数で、現在のファイルのパスとファイル名を含んだ完全なパスを表します。
例えば、以下のようなパスを取得するために使用されます。
/home/user/example.com/public_html/wp-content/plugins/my-plugin/my-plugin-file.php
WordPressのプラグイン開発などで、動的に現在のファイルのパスを取得する必要がある場合によく利用されます。
定数化しておくと使いやすい
実際にプラグインで使用する際には、定数を使ってプラグインのパスやURLを定義すると、後で何度も使う際に便利です。
// プラグインのURLとパスを定数化する
define( 'MY_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
define( 'MY_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
これにより、プラグインのURLとパスが定数 MY_PLUGIN_URL
と MY_PLUGIN_PATH
に格納されます。
// CSSファイルを読み込む例
wp_enqueue_style(
'my-plugin-style',
MY_PLUGIN_URL . 'css/style.css'
);
// JavaScriptファイルを読み込む例
wp_enqueue_script(
'my-plugin-script',
MY_PLUGIN_URL . 'js/script.js',
[],
filemtime( MY_PLUGIN_PATH . 'js/script.js' ),
true
);
// 画像ファイルのパスを使用する例
$image_url = MY_PLUGIN_URL . 'images/logo.png';
末尾のスラッシュを取り除く場合
末尾のスラッシュを取り除いて管理したい場合は、untrailingslashitを使用します。
// プラグインのURLとパスを定数化する(末尾のスラッシュを取り除く)
define( 'MY_PLUGIN_URL', untrailingslashit( plugin_dir_url( __FILE__ ) ) );
define( 'MY_PLUGIN_PATH', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
スラッシュの扱いは、開発チームやプロジェクトの内容によって統一することが重要です。
おすすめWEBスクール
WEB制作やWEBデザインを学びたいなら、SNSでも話題の「デイトラ」がおすすめ!
どのコースも10万円前後と業界最安値で、副業や転職に向けて十分なスキルを身につけることができます。
\ クリックしてジャンプ! /
お気軽にコメントどうぞ