Использование wp_add_inline_style без таблицы стилей
Мне нужно добавить пользовательские встроенные стили в header пользовательской темы, которую я создаю. Я наткнулся на функцию wp_add_inline_style()
, которая работает, но не совсем подходит мне, так как зависит от определенной таблицы стилей. Мне нужно добавить встроенные стили в конец тега head без зависимости от таблицы стилей.
Я пробовал установить либо таблицу стилей темы, либо несуществующую. В обоих случаях это работает, но, на мой взгляд, это немного грязный хак (либо загружать таблицу стилей темы дважды, либо ссылаться на несуществующий файл...). Существует ли правильный способ добавления встроенных стилей в head без зависимости от таблицы стилей?
Конечно, я мог бы добавить их непосредственно в файл header.php, но хотелось бы этого избежать.

Мне очень нравится это решение, потому что мой стиль имеет handle и добавляется в очередь, как если бы он был подключен из .css файла.

Использование false в качестве источника для wp_register_style также не разрешено согласно документации https://codex.wordpress.org/Function_Reference/wp_register_style#Parameters

@16patsle - Не уверен, что вы правы. Если вы используете false
, это означает, что стиль является алиасом для других зависимых стилей. Вот и всё.

Я предполагаю, что документация была обновлена с момента моего комментария, теперь это действительно разрешено. (Я не думаю, что передача false без зависимостей явно разрешена, но полагаю, что это всё равно работает)

На сегодняшний день (сентябрь 2022) документация была перемещена на https://developer.wordpress.org/reference/functions/wp_register_style/ и теперь явно одобряет этот метод установки источника в 'false' со следующим объяснением: "Если источник установлен в false, таблица стилей становится алиасом для других таблиц стилей, от которых она зависит."

Вам просто нужно добавить стили непосредственно в заголовок страницы. Лучший способ сделать это — использовать хук 'wp_head', при условии что ваша тема поддерживает этот хук. Вот как это можно сделать:
add_action('wp_head', 'my_custom_styles', 100);
function my_custom_styles()
{
echo "<style>*{color: red}</style>";
}
Ознакомьтесь с кодексом WordPress чтобы узнать больше о хуках действий.

Если вы (как и я) хотите добавить пользовательский встроенный CSS на страницы админ-панели, вы можете использовать действие admin_head
.

@MichaelRogers это просто пример CSS стилей. Символ "*" — это "универсальный селектор". Он сделает все элементы красными.

Ваша тема, несомненно, имеет таблицу стилей по умолчанию (иначе она даже не загрузилась бы как тема). Просто используйте эту самую таблицу стилей в качестве обработчика для вашего встроенного 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 );
}

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

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

Я поэкспериментировал с wp_add_inline_style() и вот что обнаружил. Преимущество привязки стилей к таблице стилей в том, что если она будет удалена из очереди, стили не будут выводиться. Но оба метода выводят их inline в head. Допустим, вы разработчик плагина, и ваши стили выводятся в head. Это не имеет отношения к стилям темы, и если дочерняя тема удалит основные стили темы, чтобы использовать свои, теперь стили вашего плагина не будут выводиться. Возможно, OP указал это как часть запроса именно по этой причине.
