Я сомневаюсь, что есть ошибка с 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 ошибки.
1) Почему это ?ver=3.1.2
когда я указал 3.2.1? Это не опечатка.
2) Почему он не загружает masonry.min.js из папки плагина !? plugins_url()
что get_template_directory_uri()
возвращает возвращаемое get_template_directory_uri()
, но только для masonry.min.js
. Я сильно обновил, удалил файл плагина, перезагрузил, поменял строки wp_enqueue_script
и всегда 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()
не имеет отношения, его значение даже не используется.