web-dev-qa-db-ja.com

フォルダ内のすべてのスクリプトを自動的にエンキューする方法

スクリプトのjsフォルダ全体を持っているので、それらすべてをwp_enqueue_script()で一つずつロードしなければならないのは面倒です。

それらすべてが入っているディレクトリを単に挿入する方法はありますか。

2
Lewis

wp_enqueue_scriptを使用して多数のファイルをエンキューすることに問題はありません。あなたがそれをイライラすると言っているのなら、これには簡単な解決策があります。

PHPはファイルとディレクトリをリストすることができる機能を提供します。 glob を使用すると、ディレクトリ内のすべての.jsファイルを一覧表示してから、それらをループでエンキューできます。

function enqueue_my_scripts(){
    foreach( glob( get_template_directory(). '/path/*.js' ) as $file ) {
        // $file contains the name and extension of the file
        wp_enqueue_script( $file, get_template_directory_uri().'/path/'.$file);
    }
}
add_action('wp_enqueue_scripts', 'enqueue_my_scripts');

一面ではないのは、globが相対パスを使用するのに対し、wp_enqueue_scriptはURLを使用するということです。そのため、フォルダのパスとURIを取得するためにさまざまな関数を使用しました。

7
Jack Johansson

WordPress 4.9では、相対パス(get_template_directory)を使用すると、完全なパスとして$ fileが返されました。これは共有サーバーでは使用できません。ファイル名だけを返すためにsubstr関数を使用しなければならず、それからURIを構築しなければならないことがわかりました。

foreach( glob( get_template_directory(). '/path/*.js' ) as $file ) {
    $filename = substr($file, strrpos($file, '/') + 1);
   wp_enqueue_script( $filename, get_template_directory_uri().'/path/'.$filename);
}
1
pixelslave