Intereting Posts
Имеет ли WP глобальный идентификатор $ id? Как получить идентификатор текущей категории продукта на странице архива продукта Правильный синтаксис для добавления boolean в array () Смещение WP_Query отрицательным 1 Получать результаты из пользовательской таблицы данных WordPress Функция типа in_category для пользовательских таксономий Можно отключить автосохранение для одного настраиваемого типа сообщения Перемещение WP из / blog в корневой каталог Чистый пользовательский URL для Serach + Таможенная таксономия Использование WAMP, попытка создания плагина, получение ошибки: у вас нет достаточных разрешений для доступа к этой странице Получите пользователей с разными ролями и функцией вызова для каждого из них (user_meta) Бесконечная переадресация цикла после перехода в подкаталог Что происходит с лицензией GPL, когда к ней добавляются коммерческие элементы? Отключить параметры видимости в WP Содержимое обрезки без форматирования

Идеальная встроенная динамическая инъекция CSS

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

<?php function my_styles_method() { wp_enqueue_style( 'custom-style', get_template_directory_uri() . '/css/custom_script.css' ); $color = get_theme_mod( 'my-custom-color' ); //Eg #FF0000 $custom_css = " .mycolor{ background: {$color}; }"; wp_add_inline_style( 'custom-style', $custom_css ); } add_action( 'wp_enqueue_scripts', 'my_styles_method' ); ?> 

Мне действительно нужно загрузить только динамическую часть CSS ( $custom_css ), и мне не нужно загружать custom_script.css. Согласно этому документу крючок, подобный wp_print_styles , обескуражен. Каким будет лучший способ загрузить встроенный стиль в WordPress. Может быть, я чего-то не хватает.

Я отклонил wp_head также по той же причине, что и wp_print_styles .

Solutions Collecting From Web of "Идеальная встроенная динамическая инъекция CSS"

wp_add_inline_style необходимо привязать к существующей таблице стилей. Встроенные стили будут напечатаны только в том случае, если прикрепленная к ним таблица стилей находится в очереди. Это очень удобно для контроля объема встроенных стилей. Если идея состоит в том, чтобы напечатать их глобально, самым надежным дескриптором для их привязки является таковая в основной таблице стилей темы.

Способ прикрепления встроенных скриптов к таблице стилей заключается в передаче этого дескриптора стилей в качестве первого параметра в wp_add_inline_style . Ручки стилей могут меняться в зависимости от темы, а также в зависимости от просматриваемой страницы, поэтому их нужно найти. Простой способ узнать полный список таблиц стилей и их ручек, загруженных для данной страницы, использует следующий код:

 global $wp_styles; echo '<pre>' . var_export( wp_list_pluck( $wp_styles->registered, 'src', 'handle' ), true ) . '</pre>'; 

Предположим, что основной дескриптор стилей темы « 'active-theme-style' , тогда вызов будет выглядеть следующим образом:

wp_add_inline_style( 'active-theme-style', $custom_css );

Некоторые старые или плохо написанные темы могут не загружать css надлежащим образом. В этом случае безопаснее вставлять таблицу стилей. Если это не вариант, это будет работать:

 wp_enqueue_style( 'any-handle', '/' ); wp_add_inline_style( 'any-handle', $css ); 

Он чувствует себя немного взломанным, но альтернатива, печатая тег стиля непосредственно в wp_head , wp_head не хороша.

Только для добавления решения из @ luis-sanz, я добавлю примечание, что каждая тема должна иметь файл style.css в style.css . Следуя примеру https://codex.wordpress.org/Function_Reference/wp_add_inline_style из кода, мы можем использовать get_stylesheet_uri() и добавлять динамические данные CSS с wp_add_inline_style функции wp_add_inline_style следующим образом.

 <?php function my_styles_method() { wp_enqueue_style( 'active-theme-style', get_stylesheet_uri() ); $color = get_theme_mod( 'my-custom-color' ); //Eg #FF0000 $custom_css = ".mycolor{ background: {$color}; }"; wp_add_inline_style( 'active-theme-style', $custom_css ); } add_action( 'wp_enqueue_scripts', 'my_styles_method' ); ?> 

Должен признаться, что использование специального скрипта '/css/custom_script.css' абсолютно не требуется, и динамический скрипт будет идти сразу после включения стиля по умолчанию в разделе <head> .