主题MOD多久更改一次?在设计阶段有很多,以后可能会有几次。总是由管理员,而不是普通用户,更不用说访客了。因此,在每次页面加载时生成完整的css是没有意义的(additional background info).
更好的方法是只为管理员生成css,并为其他人存储结果。这将使数据库调用量从500减少到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\' );
这更好,但所有500个MOD实际使用的频率如何?在这个函数中使用默认css值代替
style.css
? 最好将默认值移到那里,并且仅在有值的情况下生成css行。这将提供:
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\' );
如果您实际上有这么多mod,那么最好将它们组装在一个数据结构中并循环使用,而不是在函数中有500行代码(以及数千行代码来将这些部分添加到定制器)。
而且,像这样直接将css写到头部也不是什么好事。您应该使用add_inline_style
. 但那是另一回事。