Вопрос: 404 когда enqueue_script использует plugin_url

Поэтому я добавляю скрипт на свой сайт через functions.php , который находится в каталоге плагинов. Код довольно прост:

function add_jq_script() {      wp_register_script('r_footer', plugins_url('/responsiveFooter.js', __FILE__), array('jquery'),'1.1', true);     wp_enqueue_script('r_footer'); } add_action( 'wp_enqueue_scripts', 'add_jq_script', 999 ); 

плагины, кажется, работают на локальном сайте, но в консоли разработчика я получаю 404, который, кажется, соответствует моему URL сайта и абсолютному URL для моего плагин: <код> HTTP: //localhost/~thisuser/wordpress/wp-content/plugins/Users/thisuser/Sites/wordpress/wp-content/themes/liberty/responsiveFooter.js веры = 1,1 < /p>

Я немного новичок в WordPress, URL должен быть http: //localhost/~thisuser/wordpress/wp-content/plugins/responsiveFooter.js

есть ли какой-нибудь wp-параметр, который мне нужно изменить, или какой-нибудь плагин где-нибудь, чтобы это исправить?

Ответы и комментарии:

Спасибо! Кроме того, мне не нужна часть my_theme функции wp_register_script для сценария в моем активном каталоге.
Создан 21-03-2017 05:16 heliotrope

Рад слышать, что сделал свое дело!
Создан 21-03-2017 05:49 Ian

извините, это была ошибка копирования / вставки. Мой исправленный сценарий и тот, который вы опубликовали, являются теми, которые дают мне ошибку. теперь я думаю, что это тема вопроса? я должен использовать дочернюю тему для этого?
Создан 21-03-2017 04:13 heliotrope

где вы храните файлы functions.php и responseiveFooter.js?
Создан 21-03-2017 05:11 mukto90

responseiveFooter.js находится в / wordpress / wp-content / plugins /, а functions.php находится в wordpress / wp-content / themes / liberty. Это файл функций, который поставляется с темой
Создан 21-03-2017 05:15 heliotrope

я обновил ответ. пожалуйста, проверьте. Примечание: даже если это работает, не рекомендуется хранить файл JS непосредственно в каталоге плагинов.
Создан 21-03-2017 09:48 mukto90

plugins_url выведет абсолютный путь к файлу каталога плагинов в вашей установке WordPress.
Это, конечно, не будет работать для клиента (браузера), вызывающего скрипт.
Чтобы получить доступ к сценариям из каталога плагинов, вам нужно использовать plugin_dir_url (), который даст вам URL-адрес каталога плагинов.
Несколько замечаний о plugin_dir_url ()

Вам необходимо указать каталог с именем плагина, в котором находится ваш скрипт
Вывод функции содержит косую черту, поэтому вам не нужно объединять косую черту.

Допустим, ваш плагин называется «my_plugin», а скрипт находится в каталоге «js», регистрация вашего скрипта будет выглядеть примерно так:
wp_register_script ('r_footer', plugins_dir_url (). 'my_plugin / js / respiveFooter.js', array ('jquery'), '1.1', true);

Обратите внимание на пропуск __FILE__, который выведет абсолютный путь к текущему файлу (не то, что вы хотите).

Если ваш скрипт находится в вашей активной теме, вы захотите использовать другую функцию: get_stylesheet_directory_uri
Несколько замечаний по поводу get_stylesheet_directory_uri

В отличие от plugin_dir_url () требуется косая черта
Вам нужно будет указать путь к каталогу в теме, где расположен ваш скрипт.
Эта функция работает особенно хорошо, если вы работаете с дочерними темами, но дочерняя тема не требуется. Если вы работаете с дочерней темой, эта функция получит путь к файлу style.css в вашей дочерней теме, а не в родительской теме.
Обратите внимание, что функция URI НЕ URL

Допустим, ваша тема называется «my_theme», а javascript находится в файле «js», ваш сценарий регистрации будет выглядеть примерно так:
wp_register_script ('r_footer', get_stylesheet_directory_uri (). '/my_theme/js/responsiveFooter.js', array ('jquery'), '1.1', true);


Ссылки на документацию:

plugin_dir_url - https://codex.wordpress.org/Function_Reference/plugin_dir_url
get_stylesheet_uri - https://codex.wordpress.org/Function_Reference/get_stylesheet_directory_uri
get_template_directory_uri (которая является альтернативной функцией get_stylesheet_uri, но не рекомендуется для дочерних тем) - https://developer.wordpress.org/reference/functions/get_template_directory_uri/
plugins_url - https://codex.wordpress.org/Function_Reference/plugins_url
Создан 21-03-2017 05:17 Ian654614

Вы использовали неправильную вызываемую функцию в add_action (). Ваш код должен быть примерно таким
function add_jq_script () {
      wp_register_script ('r_footer', plugins_url ('/ respiveFooter.js', __FILE__), массив ('jquery'), '1.1', true);
     wp_enqueue_script ( 'r_footer');
 }

add_action ('wp_enqueue_scripts', 'add_jq_script', 999);

Кроме того, согласно вашему коду, вы должны хранить файлы responseiveFooter.js и functions.php в одном каталоге.
ОБНОВИТЬ:
Используйте этот код вместо. Вставьте в свои функции.php-
function add_jq_script () {
    wp_register_script ('r_footer', plugins_url ('/responsiveFooter.js'), массив ('jquery'), '1.1', true);
    wp_enqueue_script ( 'r_footer');
 }

add_action ('wp_enqueue_scripts', 'add_jq_script', 999);
Создан 21-03-2017 09:26