我是否应该为我使用的每个主题创建一个子主题?

时间:2016-07-05 作者:Aurora A

我最近刚刚了解了儿童主题,想知道是否有必要为我创建的每个主题创建一个儿童主题。我只是觉得奇怪,其他主题在没有儿童主题的情况下可以正常工作,而其他主题则不行。

2 个回复
SO网友:fuxia

子主题不是扩展主题的唯一方式,甚至不是最好的方式。

许多主题都提供了挂钩:动作和过滤器。您可以使用这些更改每个插件的输出。

假设您有一个名为Acme的主题index.php 包含以下代码:

get_header();

do_action( \'acme.loop.before\', \'index\' );
?>
    <div id="container">
        <div id="content" role="main">

            <?php
            /*
             * Run the loop to output the posts.
             * If you want to overload this in a child theme then include a file
             * called loop-index.php and that will be used instead.
             */
            get_template_part( \'loop\', \'index\' );
            ?>
        </div><!-- #content -->
    </div><!-- #container -->

<?php
do_action( \'acme.loop.after\', \'index\' );

do_action( \'acme.sidebar.before\', \'index\' );
get_sidebar();
do_action( \'acme.sidebar.after\', \'index\' );

get_footer();
现在,您可以编写一个小插件,围绕这些特定区域添加包装(可能是第二幅背景图像):

add_action( \'acme.loop.before\', function( $template ) {
    if ( \'index\' === $template )
        print "<div class=\'extra-background\'>";
});

add_action( \'acme.loop.after\', function( $template ) {
    if ( \'index\' === $template )
        print "</div>";
});
为其他修改添加其他独立插件。

这有四个好处:

  1. 如果你不再需要,可以在插件管理中关闭额外的行为。与子主题不同,您可以分别为每个插件执行此操作,而不必像您只有一个子主题时那样打开每个自定义项。

    它比子主题快得多,因为当WordPress搜索模板但找不到模板时,它会同时搜索子主题和父主题。当没有子主题时,这是不可能发生的。

    出现问题时,调试更容易。对于子主题,很难看到错误来自何处,是子主题还是父主题。或者两者兼而有之,这是额外的乐趣。

    安全更新。有时,当您更新父主题时,子主题不再工作,或者更糟:它的工作方式不同。它甚至可能引发致命错误,因为您在子主题中使用的函数在父主题中不再可用。

Summary: 尽可能使用钩子,仅当父主题没有提供好的钩子时才使用子主题。请主题作者添加缺少的钩子。如果你能提供一个有效的用例,我相信他/她会实现它。

SO网友:Yarwood

对我来说,经验法则是我是否扩展/修改了现有主题?如果是这样的话,我希望能够在不影响所有更改的情况下更新主题(假设它得到了很好的支持)。你可以阅读更多here 在法典中。

如果我要创建一些自定义的东西,我发现最好只使用我自己的入门主题(或类似的东西Underscores) 并编辑主题本身。

相关推荐

About wordpress child themes

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