plugins_url()
にバグがあるのではないかと思いますが、これは私が見ている奇妙な振る舞いです。
私は活性化されたプラグインで次のものを持っています
function include_masonry() {
wp_enqueue_script( 'masonry', plugins_url('js/masonry.min.js', __FILE__), array(), '3.2.1', true );
wp_enqueue_script( 'my_init_script', plugins_url('js/my_init_script.js', __FILE__), array(), '1.0.0', true );
}
add_action( 'wp_enqueue_scripts', 'include_masonry' );
私はget_template_directory_uri()
を使用した後これにたどり着きましたが、私はプラグインフォルダにすべてのプラグイン関連のjsが欲しいのでそれに反対しました。
これはフッターの出力です:
<script type='text/javascript' src='http://example.com/wp-includes/js/masonry.min.js?ver=3.1.2'></script>
<script type='text/javascript' src='http://example.com/wp-content/plugins/myplugin/js/my_init_script.js?ver=1.0.0'></script>
2番目は大丈夫ですが、最初の2つのエラーがあります。
1)3.2.1を指定したのになぜ?ver=3.1.2
なのですか?これはタイプミスではありません。
2)プラグインフォルダからmasonry.min.jsを読み込んでいないのはなぜですか? plugins_url()
はget_template_directory_uri()
が返すものを返すように見えますが、masonry.min.js
の場合だけです。私はハードリフレッシュし、プラグインファイルを削除し、再アップロードし、wp_enqueue_script
行を交換しました、そしてそれはいつも間違ったバージョンパラメータで間違ったディレクトリを指しています。
石積みはすでにWordPressによって登録されています。
wp-includes/script-loader.php
から:
// Masonry v2 depended on jQuery. v3 does not. The older jquery-masonry handle is a shiv.
// It sets jQuery as a dependency, as the theme may have been implicitly loading it this way.
$scripts->add( 'masonry', "/wp-includes/js/masonry.min.js", array(), '3.1.2', 1 );
$scripts->add( 'jquery-masonry', "/wp-includes/js/jquery/jquery.masonry$dev_suffix.js", array( 'jquery', 'masonry' ), '3.1.2', 1 );
だからあなたの最初のwp_enqueue_script()
は再び石積みを登録しません。 WordPressは既存のリソースを使用します。 plugins_url()
は関連性がなく、その値は使用されていません。