前回作成したプラグインで、一つ気になるのは、スタイルシートをテーマの追加CSSに記述していることです。
これは、テーマを変更する度に忘れずにCSSを貼ってスタイルを設定しなくてはいけないのか?という心配がつきまといます。
これをなんとか、プラグイン自身で保持できないかどうか調べてみました。
wp_enqueue_styleを使えば良い
いろいろ調べていくと、wp_enqueue_style
やwp_enqueue_script
を使えば良いみたいなことがわかりました。がしかし、一つ気になる点が出てきました。
CSSファイルは、このプラグインファイルの有るディレクトリに、サブディレクトリcss
を作ってその中に入れるということでいいとして、そのCSSファイルへのパスはどのようにして出すのか、ということです。
自サイトだけであれば、決め打ちでプラグインの中でハードコーディングしてしまえばいいでしょうが、自サイトだけでなく他のサイトでも使えるようにする可能性が万が一にもあれば、このあたりはよく考えないと・・という強迫観念に襲われます。
あちこちぐぐってみた結果、stack overflowのWordPress load a stylesheet through pluginに答えがありました。
実際にプラグインのphpファイルに追記した部分は以下の通り。
function regist_faimbox_styles() { $plugin_url = plugin_dir_url( __FILE__ ); wp_enqueue_style('faimbox_style', $plugin_url . 'css/faimbox.css' ); } add_action( 'wp_enqueue_scripts', 'regist_faimbox_styles' );
plugin_dir_url
plugin_dir_url( string $file )
パラメータで渡されたプラグインファイルのディレクトリを、URLのディレクトリで返す関数(末尾にスラッシュが付きます)。
__FILE__
は、そのプラグイン自身を指す定数。
wp_enqueue_style
wp_enqueue_style( $handle, $src, $deps, $ver, $media )
パラメータ
WordPress Codex 日本語版によると以下の通り。
- $handle
- (必須)ハンドル名
- $src
- (オプション)スタイルシートのURL
- $deps
- (オプション)このスタイルシートが読み込まれる前に読まれて置く必要のあるスタイルシートがあれば、そのハンドル名を配列として渡す。
- $ver
- (オプション)バージョン文字列。指定しないと、Wordpressのバージョン番号がクエリストリングとして付与されます。
- $media
- (オプション)スタイルシートが定義されているメディアを指定。
ここでは、$handle
に任意のハンドル名と、$src
にスタイルシートのURLを渡し、add_action()
でアクションのフックと、先の関数(tegist_faimbox_click
)を紐付ければOKです。
1件のコメント
Wordpress 関連 – KuJun Airlines · 2020年2月26日 10:08 AM
[…] […]