Когда вы разрабатываете собственный плагин для WordPress, вам почти всегда потребуется подключать кастомные стили и JavaScript-файлы. Однако в плагинах нельзя просто вставить <link> или <script> напрямую — WordPress использует специальную систему очередей (enqueue), которая позволяет подключать ресурсы корректно, безопасно и без конфликтов.
В этой статье рассмотрим, как подключать CSS и JS файлы для фронтенда и админки через функции wp_enqueue_style() и wp_enqueue_script() с правильными хуками.
Подготовка структуры плагина
Для удобства создадим следующую структуру папок внутри каталога плагина:
my-plugin/
│
├── assets/
│   ├── admin/
│   │   ├── css/
│   │   │   └── admin.css
│   │   └── js/
│   │       └── script.js
│   ├── front/
│   │   ├── css/
│   │   │   └── style.css
│   │   └── js/
│   │       └── script.js
│   └── libs/
│       └── (библиотеки и сторонние зависимости)
└── my-plugin.php
Папка libs предназначена для сторонних библиотек (например, jQuery-плагинов или внешних JS-компонентов).
Подключение файлов для админки
WordPress имеет отдельный хук для загрузки стилей и скриптов в панели администратора —admin_enqueue_scripts.
Добавим в плагин функцию, которая подключает CSS и JS для админки:
add_action('admin_enqueue_scripts', 'my_plugin_admin_assets');
function my_plugin_admin_assets() {
    // Подключаем CSS
    wp_enqueue_style(
        'myplugin-admin-style',
        plugins_url('assets/admin/css/admin.css', __FILE__)
    );
    // Подключаем JS
    wp_enqueue_script(
        'myplugin-admin-script',
        plugins_url('assets/admin/js/script.js', __FILE__),
        ['jquery'], // зависимости
        '1.0',
        true // загрузка в футере
    );
}
Функция plugins_url() возвращает корректный URL до файла внутри плагина — это аналог get_template_directory_uri() из тем, только для плагинов.
Не путайте её с plugin_dir_path(), которая возвращает путь на сервере, а не ссылку.
Подключение файлов для фронтенда
Для пользовательской части сайта используется другой хук —wp_enqueue_scripts.
add_action('wp_enqueue_scripts', 'my_plugin_front_assets');
function my_plugin_front_assets() {
    // CSS для фронта
    wp_enqueue_style(
        'myplugin-front-style',
        plugins_url('assets/front/css/style.css', __FILE__)
    );
    // JS для фронта
    wp_enqueue_script(
        'myplugin-front-script',
        plugins_url('assets/front/js/script.js', __FILE__),
        ['jquery'],
        '1.0',
        true
    );
}
Таким образом, стили и скрипты будут подключаться только на фронте, а не в админке.
Важные детали
- Разделяйте файлы по зонам — админка и фронт должны иметь свои собственные ресурсы. Это помогает избежать конфликтов и лишних загрузок.
 - Используйте уникальные префиксы для хэндлов (
myplugin-front-style,myplugin-admin-script), чтобы не пересекаться с другими плагинами. - Подключайте зависимости правильно. Если скрипт зависит от jQuery, добавляйте 
['jquery']в массив зависимостей — WordPress сам подгрузит нужные библиотеки. - Загружайте JS в футере. Последний параметр 
trueвwp_enqueue_script()помещает код перед</body>— это ускоряет загрузку страницы. - Используйте версионирование. Передавайте номер версии (например, 
'1.0') для обновления кеша при изменении файлов. 
Проверка подключения
Чтобы убедиться, что всё работает, обновите страницу сайта и откройте исходный код или консоль разработчика (Ctrl+Shift+I).
В блоке <head> или перед закрывающим тегом </body> вы увидите:
<link rel='stylesheet' id='myplugin-front-style-css' href='.../assets/front/css/style.css' type='text/css' media='all' />
<script src='.../assets/front/js/script.js' id='myplugin-front-script-js'></script>
А в админке аналогичные файлы будут загружаться с путями .../assets/admin/....
Заключение
Использование wp_enqueue_style() и wp_enqueue_script() — это правильный и безопасный способ подключения CSS и JS в WordPress плагинах.
Разделяйте фронтенд и админскую часть, задавайте зависимости и версии, используйте хуки wp_enqueue_scripts и admin_enqueue_scripts, а также корректные функции для получения путей (plugins_url() или plugin_dir_url()).
Такой подход обеспечивает совместимость, оптимальную загрузку и чистую структуру кода вашего плагина.