Какой параметр передать в wp_enqueue_style для зависимости от стилей темы?
Я написал базовый плагин галереи, который использует wp_enqueue_style для подключения таблицы стилей на страницу. Я хочу, чтобы тема WordPress могла переопределять стили плагина, а значит мне нужно, чтобы мой плагин корректно выводил CSS-файл перед CSS-файлом темы.
Функция wp_enqueue_style имеет параметр deps
как раз для таких случаев. Мой вопрос: какое значение использовать для параметра deps
, если я хочу указать "этот стиль зависит от CSS-файла темы"?
Текущий код плагина некорректен, так как использует false
для параметра deps
:
// Подключаем CSS-файл стилей - см. http://codex.wordpress.org/Function_Reference/wp_enqueue_style
wp_enqueue_style('bitvol_galleria_css', BITVOL_GALLERIA_URL . '/bitvolution-image-galleria.css', false, $this->bitvol_galleria_version, 'all');
Первая проблема - у вас зависимость указана в обратном порядке. Зависимость означает загрузку после зависимого элемента, а вам нужно, чтобы было наоборот.
Вторая проблема - таблица стилей темы на самом деле не использует очередь (enqueue), она обычно прописывается напрямую в файле header.php
темы. И поскольку она, похоже, загружается до вызова wp_head()
- у вас нет хука, чтобы гарантировать, что ваша таблица стилей будет загружена раньше.
Поэтому это обычно решается так, как в вашем обходном решении - добавлением таблицы стилей в очередь с возможностью отключить её через код или настройку в админке.

Я решил поделиться своим временным решением, которое использую, пока не найду ответ на вопрос...
Мое временное решение:
- Вырезать и вставить CSS-код из плагина в тему (т.е. в
style.css
) и при необходимости изменить его. - Заблокировать вывод таблицы стилей плагина, отменив его регистрацию в
functions.php
:
Код для добавления в functions.php
:
add_action( 'wp_print_styles', 'my_deregister_styles', 100 );
function my_deregister_styles() {
wp_deregister_style( 'bitvol_galleria_css' );
}
В некотором смысле это временное решение может оказаться лучшим вариантом? (поскольку производительность сайта улучшится за счет уменьшения количества CSS-ресурсов в разделе HEAD).
