web-dev-qa-db-ja.com

plugins_url()が誤ってwp-includeディレクトリを返す

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行を交換しました、そしてそれはいつも間違ったバージョンパラメータで間違ったディレクトリを指しています。

1
Archonic

石積みはすでに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()は関連性がなく、その値は使用されていません。

1
fuxia