Использование wp_add_inline_style без таблицы стилей

18

Мне нужно добавить собственные встроенные стили в заголовок создаваемой мной темы. Я сталкивался с wp_add_inline_style()функцией, которая работает, но не очень мне подходит, поскольку зависит от конкретной таблицы стилей. Мне нужно добавить встроенные стили в конце тега head без зависимости таблицы стилей.

Я попытался установить либо таблицу стилей темы, либо несуществующую. В обоих случаях это работает, но это немного грязный IMO (либо загрузите таблицу стилей темы дважды, либо обратитесь к файлу-призраку ...). Есть ли правильный способ добавить встроенные стили в голову, не завися от таблицы стилей?

Конечно, я мог бы добавить их прямо в файл header.php, но я бы хотел этого избежать.

terzag
источник

Ответы:

24

Вам просто нужно добавить стили прямо в заголовок страницы. Лучший способ сделать это - использовать ловушку действия wp_head, предполагая, что вы используете тему, которая имеет ловушку. Вот так:

add_action('wp_head', 'my_custom_styles', 100);

function my_custom_styles()
{
 echo "<style>*{color: red}</style>";
}

Проверьте кодекс WP, чтобы узнать больше о хуках действия.

SkyShab
источник
Нет проблем! Рад, что смог помочь.
SkyShab
Если (как и я) вы хотите добавить собственный встроенный CSS на страницы панели инструментов, вы можете использовать это admin_headдействие.
Этот бразильский парень
16

Вы можете просто использовать "фиктивную" ручку:

wp_register_style( 'dummy-handle', false );
wp_enqueue_style( 'dummy-handle' );

wp_add_inline_style( 'dummy-handle', '* { color: red; }' );
Фликс
источник
Мне очень нравится это решение, потому что мой стиль имеет дескриптор и ставится в очередь, как если бы он был включен из файла .css.
dev_masta
Использование false в качестве источника wp_register_style также не разрешено согласно документации codex.wordpress.org/Function_Reference/…
16patsle
3

Ваша тема наверняка имеет таблицу стилей по умолчанию (иначе она даже не будет загружена как тема). Просто используйте эту таблицу стилей в качестве обработчика для встроенного CSS. Пример можно найти в functions.php темы TwentyFifteen (код для краткости пропущен):

function twentyfifteen_scripts() {
    wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() );

}
function twentyfifteen_post_nav_background() {
    wp_add_inline_style( 'twentyfifteen-style', $css );
}
Casper
источник
1
ОП специально запрашивал метод, отличный от использования wp_add_inline_style (). Оба метода работают, и я не нашел веских причин использовать wp_add_inline_style (). Если вы знаете причину, я хотел бы знать об этом.
SkyShab
Ваше решение работает, но оно все еще "хакерское", согласно тому, что я однажды услышал от кого-то из команды WP (если я не ошибаюсь); не совсем мое мнение . Я думаю, что OP думал, что не было никакого способа сделать это без двойной загрузки таблицы стилей или использования призрачного хука. В любом случае, если они не создают плагин, всегда есть таблица стилей темы. Я также редактирую свой ответ, поскольку ваше решение задокументировано в Кодексе. :)
Каспер
Я играл с wp_add_inline_style (), и это то, что я нашел. Преимущество присоединения стилей к таблице стилей заключается в том, что если она будет удалена, стили не будут распечатаны. Но любой метод печатает их в голове. Скажем, вы разработчик плагинов, и ваши стили напечатаны в голове. Это не имеет ничего общего со стилями темы, и поэтому, если дочерняя тема исключила основные стили темы для использования своих собственных, теперь ваши стили плагинов не выводятся. Таким образом, ФП, возможно, указал эту часть запроса по этой причине.
SkyShab