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 ); 

плагины, похоже, работают на локальном сайте, но в dev-консоли я получаю 404, который, похоже, объединяет мой URL-адрес сайта и абсолютный URL-адрес моих плагинов: http://localhost/~thisuser/wordpress/wp-content/plugins/Users/thisuser/Sites/wordpress/wp-content/themes/liberty/responsiveFooter.js?ver=1.1

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

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

Solutions Collecting From Web of "404, когда enqueue_script с помощью plugin_url"

plugins_url выдаст абсолютный путь к файлу каталога плагинов в вашей установке WordPress.

Это, конечно, не будет работать для клиента (браузера), вызывающего скрипт.

Чтобы получить доступ к скриптам из каталога плагинов, вы захотите использовать plugin_dir_url() который предоставит вам URL-адрес каталога плагина.

Некоторые вещи, чтобы отметить о plugin_dir_url()

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

Допустим, ваш плагин называется «my_plugin», и скрипт находится в каталоге «js», ваша регистрация скриптов будет выглядеть примерно так:

 wp_register_script('r_footer', plugins_dir_url() . 'my_plugin/js/responsiveFooter.js', array('jquery'),'1.1', true); 

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


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

Некоторые примечания о get_stylesheet_directory_uri

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

Итак, скажем, ваша тема называется «my_theme», а javascript находится в файле «js», ваш скрипт регистрации будет выглядеть примерно так:

 wp_register_script('r_footer', get_stylesheet_directory_uri() . '/my_theme/js/responsiveFooter.js', array('jquery'),'1.1', true); 

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

Вы использовали неправильную вызываемую функцию в add_action() . Ваш код должен быть чем-то вроде этого –

 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 ); 

Кроме того, согласно вашему коду, вы должны хранить файлы responsiveFooter.js и functions.php в одном каталоге.

ОБНОВИТЬ:

Вместо этого используйте этот код. Вставьте в свои functions.php

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