WordPress как на ладони
wordpress jino

wp_register_style() WP 2.6

Регистрирует CSS файл в WordPress. После регистрации файл можно добавить в html документ с помощью функции wp_enqueue_style().

Нужно использовать эту функцию, чтобы правильно подключить CSS файлы в WordPress. Для скриптов такой функцией является wp_register_script().

Эта функция только регистрирует файл, чтобы он был подключен и выведен, его нужно добавить в очередь с помощью wp_enqueue_style(). Файл будет добавлен в <head> часть документа.

Подключать файлы так, а не напрямую в коде, выгодно для дальнейшей оптимизации. Если все файлы подключены через систему регистрации WP, то затем можно использовать плагины, чтобы объединить все стили в один и отдавать их в сжатом виде, на лету.

Для вызова этой функции используйте события: wp_enqueue_scripts и/или admin_enqueue_scripts. Вызов функции за пределами этого события может вызвать ошибки.

Список всех зарегистрированных стилей по умолчанию в WordPress смотрите в коде функции wp_default_styles()

Хуков нет.

Возвращает

С версии WP 4.3 возвращает true/false. До этого ничего не возвращала.

Использование

wp_register_style( $handle, $src, $deps, $ver, $media );
$handle(строка) (обязательный)
Название подключаемого файла стилей (буквы в нижнем регистре). Должен быть уникальным, так как он будет использован как идентификатор в системе.
$src(строка) (обязательный)

УРЛ к файлу стилей. Например, http://site.ru/css/style.css. Не нужно указывать путь жестко, используйте функции: plugins_url() (для плагинов) и get_template_directory_uri() (для тем).

Внешние домены можно указывать с неявным протоколом //notmysite.ru/css/style.css.

$deps(массив)
Массив идентификаторов других стилей, от которых зависит подключаемый файл стилей. Указанные тут стили, будут подключены до текущего.
По умолчанию: array()
$ver(строка/логический)
Строка определяющая версию стилей. Версия будет добавлена в конец ссылки на файл: ?ver=3.5.1. Если не указать (установлено false), будет использована версия WordPress. Если установить null, то никакая версия не будет установлена.
По умолчанию: false
$media(строка)

Устанавливается значение атрибута media. media указывает тип устройства для которого будет работать текущий стиль. Может быть:

  • all
  • screen
  • handheld
  • print

Полный список смотрите здесь.
По умолчанию: 'all'

Примеры

#1 При написании плагина (за пределами PHP класса)

// регистрируем стили
add_action( 'wp_enqueue_scripts', 'register_plugin_styles' );

// регистрируем файл стилей и добавляем его в очередь
function register_plugin_styles() {
	wp_register_style( 'my-plugin', plugins_url( 'my-plugin/css/plugin.css' ) );
	wp_enqueue_style( 'my-plugin' );
}

#2 При написании плагина (внутри PHP класса)

class my_plugin {

	function __construct() {
		// регистрируем стили
		add_action( 'wp_enqueue_scripts', array( $this, 'register_plugin_styles' ) );
	}

	// регистрируем файл стилей и добавляем его в очередь
	public function register_plugin_styles() {
		wp_register_style( 'my-plugin', plugins_url( 'my-plugin/css/plugin.css' ) );
		wp_enqueue_style( 'my-plugin' );
	}
}

Код wp register style: wp-includes/functions.wp-styles.php WP 4.9

<?php
function wp_register_style( $handle, $src, $deps = array(), $ver = false, $media = 'all' ) {
	_wp_scripts_maybe_doing_it_wrong( __FUNCTION__ );

	return wp_styles()->add( $handle, $src, $deps, $ver, $media );
}

Cвязанные функции

Из метки: styles (стили)

Еще из раздела: Регистрация script и style

wp_register_style 13 комментариев
Полезные 1 Все
  • levati cайт: levati.name

    Для вызова этой функции используйте событие wp_enqueue_scripts.

    В данном случае - wp_enqueue_style cool .

    1
    Ответить2.5 года назад #
    • Kama4639

      События wp_enqueue_style в WordPress вообще нет. Вы проверяли прежде чем написать, у вас работает?

      -3
      Ответить2.5 года назад #
  • Aleksandr

    Здравствуйте.
    Использую подключение файла CSS указанным в данной статье способом "#1 При написании плагина (за пределами PHP класса)".
    На страницах блога, подключенные стили работают. Но вот в админ-панеле - нет. Подскажите, пожалуйста, что необходимо добавить/исправить, чтобы работало и в админ-панеле?

    Ответить2 года назад #
    • Kama4639

      Используйте событие admin_enqueue_scripts вместе wp_enqueue_scripts

      ``
      add_action( 'wp_enqueue_scripts', 'register_plugin_styles' );
      add_action( 'admin_enqueue_scripts', 'register_plugin_styles' );

      1
      Ответить2 года назад #
      • Aleksandr

        Вот теперь, естественно, всё работает!
        Благодарю Вас за помощь!

        Ответить2 года назад #
  • Iura cайт: realsinner.net

    У меня вот такой вопрос . Вызывается у меня css (style.css?ver=4.3.1), значит он проверяет версию WP и если совпадает или выше то грузить стиль если нет то не грузит , или я что то не понял ?

    Ответить1.9 года назад #
    • Kama4639

      Нет, там просто указана текущая версия WP, если не указан параметр $ver, если он указан то будет показан он.

      Это на всякий случай, чтобы при обновлении версии WP стили тоже обновились у пользователей когда они зайдут на сайт (браузер их кэширует). file.css?xxx и file.css?xxxx - это разные названия файлов для браузера, хотя по факту это один и тот же файл...

      Ответить1.9 года назад #
      • Егор

        У меня совершенно дикая проблема на этой почве.

        Google Chrome подгружает все старые версии стилей и не обновляет новые сколько бы раз я не скидывал кэш (даже специальные расширения ставил). Т.е., если я изменил хоть одно значение в стилях, то пока я не пропишу новую версию изменения не вступят в силу, а когда пропишу в инструментах разработчика вижу, что на один элемент ссылаются style.css?ver1, style.css?ver2, style.css?ver3 и т.д.

        Если честно, из-за этой проблемы разработка затягивается где-то в 1,5-2 раза, потому что всегда приходится обновлять еще и файл стилей.

        В IE например, проблемы этой нет (но не будешь же в ie сайты верстать).

        Думал, может я неправильно стили подключаю - попробовал этот метод - та же канитель.

        Никто не знает, что может быть?

        Ответить1.4 года назад #
        • Kama4639

          Странно, обычно при ctrl+F5 все обновляется, даже если версия файла одна и таже...

          Может ваш сервер ставит какие-то дополнительные заголовки для статических файлов. expire там или что-то еще, типа такого что-то в htaccess:

          # My favicon
          ExpiresByType image/x-icon "access plus 1 year"
          # Images
          ExpiresByType image/gif "access plus 1 month"
          ExpiresByType image/png "access plus 1 month"
          ExpiresByType image/jpg "access plus 1 month"
          ExpiresByType image/jpeg "access plus 1 month"
          # CSS
          ExpiresByType text/css "access plus 1 month"
          # Javascript
          ExpiresByType application/javascript "access plus 1 year"

          Как решение можно в конец ставить всегда новое значение, на период разработки...

          'file.css?'. rand(1,9999);
          Ответить1.4 года назад #
  • Помогите разобраться.
    не могу подключить стиль:

    <?php
    function register_styles() {
    	wp_register_style('english', get_template_directoty_uri() .
    		'/style/english.css');
    	wp_enqueue_style('english');
    }
    add_action('wp_enqueue_scripts', 'register_styles');

    выдает ошибку:
    Fatal error: Call to undefined function get_template_directoty_uri() in on line 3

    удаляю:
    'wp_enqueue_scripts', ошибки проподает, но стиль не подключается.

    Где что не так? что прописать?

    • campusboy1948 cайт: www.youtube.com/c/wpplus

      По ошибке же понятно, что "Фатальная ошибка: вызвана неопределенная функция". То есть скрипт не знает такой функции get_template_directoty_uri(). А почему? Да потому написана она неправильно! Правильно get_template_directory_uri().

      • спасибо, я уже заметил... но все равно стиль не подключается.

        • все. спасибо. заработало.
          Главный косяк - это Я... полдня с direсtoty боролся crazy

Здравствуйте, !

Ваш комментарий