WordPressでプラグインのフォルダ名を取得するには?

 とあるプラグインの PHP ファイルをこつこつ読み進めているのですが、フォルダ名を取得する関数でPHP で用意されているものと WordPress で用意されているものとが入り混じって混乱したので、少しまとめてみました。プラグインを自作した際、CSS をプラグインフォルダに用意し、wp_register_style 関数や wp_enqueue_style 関数を使って WordPress が生成したページにスタイルシートを追加することが多いと思います。そのようなとき、どのようにしてプラグインフォルダのパスを取得しているのか、参考にしてください。

テスト環境を準備する

 ローカル環境に XAMPP をインストールしてテストしました。実際にはファイルをアップロードしたサーバのパスになることに注意してください。

20150705_1

WordPress のショートコードを使う

 Twitter やブログカードのプラグインなどで使用することが多いかと思います。例えば、WordPress 管理画面の「投稿」のテキストエディタに

と書きます。

20150705_2

角括弧(ブラケット)で囲むことを忘れずに。

 次に、プラグインを置くフォルダに移動します。「(WordPress インストールフォルダ)/wp-content/plugins/」以下に適当な名前でフォルダを作り、適当な名前の PHP ファイルを作成してください。PHP ファイルには次のコードを書きます。

これで超簡単な自作プラグインができました。先頭のコメント部分にプラグインの詳細を記述しますが、とりあえず「Plugin Name」さえ書いておけば、動作はします。

 プラグインを有効化しないと、

20150705_3

当然このように表示されます。プラグインを有効化すると、

20150705_4

20150705_5

ちゃんと置き換わります。

各種フォルダ名取得関数を試してみる

 これで準備が終わったので、自作プラグインの function_test 関数の中身をいろいろ変えてみます。

__FILE__

 PHPにあらかじめ用意された定数です。PHP ファイルのフルパスが格納されています。

20150705_6

PHP では多くの場面でこの定数を加工してフォルダやファイルのパスを取得します。

dirname(__FILE__)

 PHP ファイルの親フォルダのパスを取得します。

20150705_7

PHP5.3 から 「__DIR__」という定数が追加されました。

これでも同じ結果を得ることができます。

plugin_dir_url(__FILE__)

 WordPress の関数です。上の PHP の関数と同じようにPHP ファイルの親フォルダのパスを取得します。

20150705_8

注意すべきなのは、最後に「/(スラッシュ)」が挿入されることです。プラグイン内でパスを取得した後に CSS ファイルを「.(ドット)」でつなげてwp_register_style 関数と wp_enqueue_style 関数で追加するのが定番の処理ですが、これを忘れるとハマります。

 ええ、管理人もハマりましたとも。

おまけ

 少し毛色の違う関数ですが、WordPress では「plugin_basename」関数なるものも用意されています。プラグインフォルダのベースネームを取得するものなのですが、細かい説明より、実際に出力されるものを見たほうが早い。

20150705_9

この場合は先頭に「/(スラッシュ)」が挿入されていません。plugin_dir_url 関数の動作と併せて考えるなら、使う関数は WordPress 用と PHP 用のどちらかで統一するほうが余計なバグを含むことがないといえるでしょう。

「役に立った」と思ったら、記事のシェアをお願いします。

スポンサーリンク

Comment

コメント認証制です。反映されるまで時間が掛かる場合があります。
URLの記入はhttpのhを抜いて下さい(宣伝対策です)。
連続でコメントするとスパム扱いになる場合があります。
しばらく待ってからコメントしてください。

CAPTCHA


Si prega di attivare i Javascript! / Please turn on Javascript!

Javaskripta ko calu karem! / Bitte schalten Sie Javascript!

S'il vous plaît activer Javascript! / Por favor, active Javascript!

Qing dakai JavaScript! / Qing dakai JavaScript!

Пожалуйста включите JavaScript! / Silakan aktifkan Javascript!

TOP