Agregar estilos de personalizador con wp_add_inline_style

4

Como dije en una pregunta anterior Tengo un tema con cientos de mods, que reúno en un solo mod para no tener que recorrer todos los mods en cada carga de página.

Ahora, el códice le permite descargar estilos de personalización directamente en la cabeza, lo cual no es muy elegante. Hay wp_add_inline_style para agregar css de forma ordenada a una hoja de estilo existente. Esto se ve así y funciona bien:

$style = get_theme_mod ('all-mods');
wp_add_inline_style ('my-main-style',$style);

Sin embargo, hay un problema. Si construyo un tema secundario, los estilos en línea todavía se agregan directamente después de los estilos principales. Esto hace que sean anulados por el tema secundario css, que se carga después de los padres para asegurarse de que anula esos estilos. Esto no es lo que el usuario espera.

Los estilos del personalizador deben tener la máxima prioridad, por lo que de alguna manera debo asegurarme de que sean los últimos en cargarse en la cabeza. Puedo detectar si hay un tema secundario activo , pero no puedo saber el manejo del estilo secundario para agregarle los estilos en línea. .

En este momento simplemente he definido un archivo css vacío, que encolado justo al final de la cabecera, y luego agrego los estilos en línea. Pero esto está lejos de ser elegante, por lo que tomé este camino en primer lugar. ¿Alguien sabe de un enfoque más inteligente?

    
pregunta cjbj 11.11.2016 - 18:29

1 respuesta

1

Puedes intentar detectar si el tema utilizado actualmente es un niño y, si es así, apuntar el CSS en línea al estilo correcto. No probé esta solución pero podría ser un buen punto de partida.

function mytheme_enqueue_style()
{
    wp_enqueue_style( 'parent-theme-style',get_template_directory_uri() . '/style.css', false );

    if(is_child_theme())
    {
        wp_enqueue_style( 'child-theme-style', get_stylesheet_directory_uri() . '/style.css', array('parent-theme-style')  );
    }

    $style = get_theme_mod ('all-mods');
    $where = is_child_theme() ? 'child-theme-style' : 'parent-theme-style';
    wp_add_inline_style( $where, $style );
}

add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_style' );

NOTA

En el códice tenemos

  

En el caso de que se utilice un tema secundario, esta función volverá   El directorio temático del niño URI. Usa get_template_directory_uri() para   evitar ser anulado por un tema secundario.

    
respondido por el koMah 03.12.2016 - 18:27

Lea otras preguntas en las etiquetas