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


18

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

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

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

Ответы:


24

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

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

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

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


Нет проблем! Рад, что смог помочь.
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 );
}

1
ОП специально запрашивал метод, отличный от использования wp_add_inline_style (). Оба метода работают, и я не нашел веских причин использовать wp_add_inline_style (). Если вы знаете причину, я хотел бы знать об этом.
SkyShab

Ваше решение работает, но оно все еще "хакерское", согласно тому, что я однажды услышал от кого-то из команды WP (если я не ошибаюсь); не совсем мое мнение . Я думаю, что OP думал, что не было никакого способа сделать это без двойной загрузки таблицы стилей или использования призрачного хука. В любом случае, если они не создают плагин, всегда есть таблица стилей темы. Я также редактирую свой ответ, поскольку ваше решение задокументировано в Кодексе. :)
Каспер

Я играл с wp_add_inline_style (), и это то, что я нашел. Преимущество присоединения стилей к таблице стилей заключается в том, что если она будет удалена, стили не будут распечатаны. Но любой метод печатает их в голове. Скажем, вы разработчик плагинов, и ваши стили напечатаны в голове. Это не имеет ничего общего со стилями темы, и поэтому, если дочерняя тема исключила основные стили темы для использования своих собственных, теперь ваши стили плагинов не выводятся. Таким образом, ФП, возможно, указал эту часть запроса по этой причине.
SkyShab
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.