Вопрос или проблема
Я написал следующий код в отдельном плагине, но он не работает
Пожалуйста, подскажите, как изменить код, чтобы файл JS загружался.
<?php
/*
Plugin Name: Copy post
*/
class CopyPostApi{
public function __construct(){
// Add assets
add_action( 'wp_enqueue_scripts', array($this, 'load_assets'));
}
public function load_assets()
{
wp_enqueue_script(
'main_js',
plugin_dir_url(__FILE__) . 'assets/main.js',
array(),
1,
true
);
}
}
new CopyPostApi;
Примечание: Я искал и использовал предложенные коды, но это не сработало
Ваш код кажется правильным, поэтому я думаю, что проблема, скорее всего, в вашей теме. Вы также разрабатываете свою собственную тему? Функция wp_head вызывается в тех файлах, которые были подключены к wp_enqueue_scripts. Она должна быть в теме между тегами head, как вы видите здесь:
https://developer.wordpress.org/reference/functions/wp_head/#comment-900
У меня была такая же проблема… дело в том, что вы используете wp_enqueue_scripts, но если вы хотите загрузить его в панели администрирования, вам нужно использовать admin_enqueue_scripts вместо этого…
Функция должна вызываться с использованием действия хука wp_enqueue_scripts, если вы хотите вызвать ее на фронтэнде сайта, как в приведенных выше примерах. Чтобы вызвать ее на экранах администрирования, используйте действие хука admin_enqueue_scripts.
1) Проверьте расположение файла JavaScript, он должен находиться в правильной директории.
- Функция вызывается слишком рано: Функция wp_enqueue_script должна вызываться после того, как сработает хук wp_enqueue_scripts. Убедитесь, что вы вызываете эту функцию в правильном хуке.
Ответ или решение
Ваша проблема связана с тем, что JavaScript файл не загружается в плагине при использовании функции wp_enqueue_script
. Давайте разберем возможные причины и предложим решения.
Теория
В WordPress существует несколько хуков, которые можно использовать для загрузки скриптов: wp_enqueue_scripts
для фронтенда и admin_enqueue_scripts
для административной панели. Если скрипт предназначен для работы на фронтальной части сайта, необходимо использовать wp_enqueue_scripts
. Для загрузки скриптов в админпанели, нужно использовать admin_enqueue_scripts
. Ошибка в выборе правильного хука может привести к тому, что скрипт не будет загружаться в нужной части сайта.
Также важно убедиться, что скрипт подключается после инициализации движка WordPress, а не раньше. Важно, чтобы все зависимости и необходимые функции были доступны на момент подключения скрипта. Обычно для подключения скриптов и стилей используется стандартная функция wp_enqueue_script
, вызываемая в контексте вышеуказанных хуков.
Пример
Рассмотрим ваш код:
<?php
/*
Plugin Name: Copy post
*/
class CopyPostApi {
public function __construct() {
add_action('wp_enqueue_scripts', array($this, 'load_assets'));
}
public function load_assets() {
wp_enqueue_script(
'main_js',
plugin_dir_url(__FILE__) . 'assets/main.js',
array(),
1,
true
);
}
}
new CopyPostApi;
В данном примере для загрузки скрипта используется wp_enqueue_scripts
, что предполагает его использование на фронтенде сайта.
Применение
-
Проверьте правильность хука: Убедитесь, что
"wp_enqueue_scripts"
это подходящий хук для задачи. Если ваш скрипт должен загружаться в административной панели WordPress, вам следует использоватьadmin_enqueue_scripts
. -
Убедитесь в правильности пути: Проверьте, что ваш JavaScript файл находится в правильной директории
assets
и имеет правильное имяmain.js
. Вы можете сделать это, открыв сам файл по указанному адресу в браузере. -
Проверьте тему: Убедитесь, что ваша тема вызывает
wp_head()
в разделе<head>
вашего HTML, так как именно этой функцией WordPress добавляет все стили и скрипты, добавленные черезwp_enqueue_scripts
. -
Проверка вызова функции: Убедитесь, что
load_assets
вызывается после того, как WordPress инициализирует все необходимые ресурсы. Это важно для совместимости с другими плагинами и темами.
Если все вышеперечисленное выполнено верно, то после применения указанных рекомендаций ваш скрипт должен загружаться корректно.