Какой параметр передать в wp_enqueue_style для зависимости от стилей темы?

16 февр. 2011 г., 07:20:00
Просмотры: 1.24K
Голосов: 1

Я написал базовый плагин галереи, который использует 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');
0
Все ответы на вопрос 2
0

Первая проблема - у вас зависимость указана в обратном порядке. Зависимость означает загрузку после зависимого элемента, а вам нужно, чтобы было наоборот.

Вторая проблема - таблица стилей темы на самом деле не использует очередь (enqueue), она обычно прописывается напрямую в файле header.php темы. И поскольку она, похоже, загружается до вызова wp_head() - у вас нет хука, чтобы гарантировать, что ваша таблица стилей будет загружена раньше.

Поэтому это обычно решается так, как в вашем обходном решении - добавлением таблицы стилей в очередь с возможностью отключить её через код или настройку в админке.

16 февр. 2011 г. 10:00:38
0

Я решил поделиться своим временным решением, которое использую, пока не найду ответ на вопрос...

Мое временное решение:

  1. Вырезать и вставить CSS-код из плагина в тему (т.е. в style.css) и при необходимости изменить его.
  2. Заблокировать вывод таблицы стилей плагина, отменив его регистрацию в 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).

16 февр. 2011 г. 09:21:20