主题定制器会减慢我的网站的速度吗?

时间:2016-05-17 作者:cjbj

我建立了一个很棒的主题,它非常灵活,因为它有500个不同的设置(custom) 在主题自定义项中键入。我生成实时csslike it says in the codex:

function mytheme_customize_css()
{
    ?>
         <style type="text/css">
             h1 { color:<?php echo get_theme_mod(\'header_color\', \'#000000\'); ?>; }
             h2 { color:<?php echo get_theme_mod(\'tagline_color\', \'#000000\'); ?>; }
             ... 498 more ...
         </style>
    <?php
}
add_action( \'wp_head\', \'mytheme_customize_css\');
现在我的网站很慢。我认为这是因为每个页面加载有500个数据库调用。有没有一种方法可以加快我的网站的速度,并且仍然有500个自定义选项?

1 个回复
最合适的回答,由SO网友:cjbj 整理而成

主题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. 但那是另一回事。

相关推荐

About wordpress child themes

我对WordPress和儿童主题有一些问题。据我所知,如果我不想在更新主题时失去任何东西,使用子主题是很重要的。我是WordPress的初学者,到目前为止,我一直在使用PageBuilder(管理面板上的板载自定义选项)自定义我的网站,并在“附加CSS”选项中加入几行CSS。所有这些都是在主主题上完成的(只是玩转尝试学习),现在我想开始使用一个儿童主题。问题如下:我不知道我是否可以像通过管理界面设计父主题那样设计我的子主题,或者我是否必须通过文本编辑器(在我的计算机上,然后通过FTP等方式上传)对所有内容