¿Con qué frecuencia se cambian las modificaciones de tema? Mucho en la fase de diseño, tal vez un par de veces más tarde. Siempre por los administradores, nunca por los usuarios normales, y mucho menos los visitantes. Por lo tanto, no tiene sentido generar el css completo en cada carga de página ( información de fondo adicional ).
Un mejor enfoque es generar el css solo para el administrador y almacenar el resultado para otros. Esto reducirá la cantidad de llamadas a la base de datos de 500 a 1.
function mytheme_customize_css()
{
if (current_user_can( 'edit_theme_options' ) ) {
$assemble_css = "
<style type='text/css'>
h1 { color:" . get_theme_mod( 'header_color', '#000000' ); . "; }
h2 { color:" . get_theme_mod( 'tagline_color', '#ffffff' ); . "; }
... 498 more ...
</style>";
set_theme_mod( 'all_mods', $assemble_css );
}
echo get_theme_mod ( 'all_mods', '' );
}
add_action( 'wp_head', 'mytheme_customize_css' );
Esto es mejor, pero ¿con qué frecuencia se usarán los 500 mods? ¿Y es realmente ideal tener los valores css predeterminados en esta función en lugar de style.css
? Es mejor mover los valores predeterminados allí y solo generar una línea css si hay un valor. Esto da:
function mytheme_customize_css()
{
if (current_user_can( 'edit_theme_options' ) ) {
$assemble_css = "
<style type='text/css'>";
if ( get_theme_mod('header_color') ) $assemble_css .= "
h1 { color:" . get_theme_mod( 'header_color' ); . "; }";
if ( get_theme_mod('tagline_color') ) $assemble_css .= "
h2 { color:" . get_theme_mod( 'tagline_color' ); . "; }";
... 498 more ...
$assemble_css .= "</style>";
set_theme_mod( 'all_mods', $assemble_css );
}
echo get_theme_mod ( 'all_mods', '' );
}
add_action( 'wp_head', 'mytheme_customize_css' );
Si realmente tiene tantos mods, sería aún mejor ensamblarlos en una estructura de datos y recorrerlos en lugar de tener 500 líneas en la función (y varios miles de líneas de código para agregar las secciones al personalizador).
Además, escribir el css directamente en la cabeza como esto no es muy bueno. Debería utilizar add_inline_style
. Pero eso es otra cosa.