Usando wp_add_inline_style sin una hoja de estilos
Necesito agregar estilos en línea personalizados en el encabezado de un tema personalizado que estoy creando. Me he encontrado con la función wp_add_inline_style()
, que funciona pero realmente no me sirve ya que depende de una hoja de estilos específica. Necesitaría agregar estilos en línea al final de la etiqueta head sin una dependencia de hoja de estilos.
He intentado establecer tanto la hoja de estilos del tema como una que no existe. En ambos casos, funciona pero es un poco un hack sucio en mi opinión (ya sea cargar la hoja de estilos del tema dos veces o hacer referencia a un archivo fantasma...). ¿Hay una forma correcta de agregar estilos en línea en el head sin depender de una hoja de estilos?
Por supuesto, podría agregarlos directamente en el archivo header.php pero me gustaría evitar esto.

Me gusta mucho esta solución porque mi estilo tiene un handle y se encola como si estuviera incluido desde un archivo .css.

Usar false como el origen de wp_register_style tampoco está permitido según la documentación https://codex.wordpress.org/Function_Reference/wp_register_style#Parameters

@16patsle - No estoy seguro de que tengas razón. Si usas false
la hoja de estilo es un alias de otras hojas de estilo de las que depende. Eso es todo.

Supongo que la documentación se actualizó desde que publiqué ese comentario, ahora parece estar permitido. (No creo que pasar false sin dependencias esté explícitamente permitido, pero supongo que probablemente aún funciona)

A partir de hoy (septiembre 2022) la documentación ha sido movida a https://developer.wordpress.org/reference/functions/wp_register_style/ y ahora explícitamente aprueba esta técnica de establecer la fuente como 'false' con la siguiente explicación: "Si la fuente se establece como false, la hoja de estilo es un alias de otras hojas de estilo de las que depende."

Solo necesitas agregar los estilos directamente en el head de la página. La mejor manera de hacer esto es usando el action hook 'wp_head', asumiendo que estás usando un tema que tenga este hook. Así:
add_action('wp_head', 'my_custom_styles', 100);
function my_custom_styles()
{
echo "<style>*{color: red}</style>";
}
Consulta el WP codex para aprender más sobre los action hooks.

Si (como yo) quieres añadir CSS personalizado en línea a las páginas del panel de control, puedes usar la acción admin_head
.

@MichaelRogers son solo estilos CSS de ejemplo. El "*" es un "selector universal". Esto haría que todos los elementos tengan el color rojo.

Tu tema casi seguro tiene una hoja de estilos por defecto (de lo contrario ni siquiera se cargaría como un tema). Simplemente usa esta misma hoja de estilos como manejador para tu CSS inline. Un ejemplo se puede encontrar en el functions.php del tema TwentyFifteen (código omitido por brevedad):
function twentyfifteen_scripts() {
wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() );
}
function twentyfifteen_post_nav_background() {
wp_add_inline_style( 'twentyfifteen-style', $css );
}

El OP específicamente pidió un método diferente a usar wp_add_inline_style(). Ambos métodos funcionan, y no he encontrado una razón convincente para usar wp_add_inline_style(). Si conoces alguna razón, me gustaría saberla.

Tu solución funciona, pero sigue siendo un "hack" según algo que escuché de alguien del equipo de WP alguna vez (si no me equivoco); no es exactamente mi opinión. Creo que el OP pensaba que no había manera de hacer esto sin cargar la hoja de estilos dos veces o usar un hook fantasma. De todos modos, si no están desarrollando un plugin, siempre hay una hoja de estilos del tema disponible. También estoy editando mi respuesta ya que tu solución está documentada en el Codex. :)

Experimenté con wp_add_inline_style(), y esto es lo que descubrí. La ventaja de adjuntar los estilos a una hoja de estilos es que si se desencola, los estilos no se imprimirán. Pero cualquiera de los métodos los imprime en línea en el head. Digamos que eres un desarrollador de plugins y tus estilos se imprimen en el head. Esto no tiene nada que ver con los estilos del tema, así que si un tema hijo desencola los estilos principales del tema para usar los suyos, ahora los estilos de tu plugin no se están mostrando. Por lo tanto, el OP pudo haber especificado esa parte de la solicitud por esta razón.
