欢迎光临
我们一直在努力

为你的WordPress主题框架创建子主题

建站超值云服务器,限时71元/月

本文目录
[隐藏]

  • 1创建初始子主题
  • 2通过该框架的过滤挂钩修改代码
  • 3通过该框架的动作挂钩添加代码
  • 4在你的子主题中建立新的模板文件
  • 5何时使用插件
  • 6小结

本文是《开发你的 WordPress 主题框架》系列教程的第 7 部分,该系列共包含以下 10 个部分:

  1. WordPress 主题框架是如何工作的
  2. 决定如何开发你的WordPress主题框架
  3. 为你的WordPress主题框架建立起始文件
  4. 为你的WordPress主题框架添加动作挂钩
  5. 为你的WordPress主题框架添加函数
  6. 为你的WordPress主题框架添加过滤挂钩
  7. 为你的WordPress主题框架创建子主题
  8. 为你的WordPress主题框架开发插件
  9. 发布你的WordPress主题框架
  10. 为你的WordPress主题框架编写文档

之前建立的主题框架将用作所开发网站的父主题。这意味着,在每一种情况下,你都需要去创建一个子主题,并运用自己的设计以及更多的其他的函数创建一个网站,而这个网站也是唯一的。

最显而易见的方式是全身心地投入,并开始在你的子主题中创建模板文件,用来覆盖框架中的那些原文件,但由于你已经给你的框架添加了动作挂钩和过滤挂钩, 所以这未必就是最好的一种方法。

在这篇文章中,我将重点介绍你可以运用在子主题中的一些技术,从而让你充分地利用好自己的框架,并能根据需要随时改善工作流程。

我将介绍的主题如下:

  • 创建初始子主题
  • 通过该框架的过滤挂钩修改代码
  • 通过该框架的行动挂钩添加代码
  • 在你的子主题中建立新的模板文件
  • 何时使用插件

创建初始子主题

开发主题框架的主要目的是为了运用DRY(切勿重复自己)原则,这也同样适用于你的子主题。

为框架创建一个或多个“初始”子主题会让你变得更有效率。子主题中包含有你需要在新项目中使用的一些核心代码。

在决定如何去创建的同时,有一些关于工作方式和建立网站的问题需要加以考虑:

  • 你是否是在为同一个部门有类似需求的客户创建网站?
  • 你是否是想给小客户提供低成本的基于模板的网站?
  • 你是否有能为大多数新项目服务的具体模板文件?
  • 你的某些网站是否需要具有一些独特的功能(例如,我使用的两个初始子主题,一个有评论功能,另一个就没有)?
  • 是否有适用于大多数项目的样式?你能否使用面向对象的样式或一个CSS预处理器来处理大多数项目?
  • 是否有适用于大多数(或占有一定显著比例的)新项目的代码库或者其他资源?
  • 是否有两个或三个主要范畴,你可以将一些项目放置于其下,而每个范畴都涉及到类似的开发工作?

如果你对上述某一个问题的回答是肯定的话,那么创建一个或多个初始子主题就可以节省你的时间。你可以使用一些基本代码创建一整套子主题,这些代码你在所有项目中都会重复用到,那样你就不需要为每一个新项目去重写代码(或创建文件)。

注意:如果你要为每一个新项目添加一些代码的话,也许你只是想将它添加到你的框架之中,而不是子主题内,将来如果另有需要的话,使用一个挂钩你就可以将其覆盖。

即使你对以上问题的回答都是否定的,用空样式表和函数文件创建一个非常基本的初始主题,并在样式表中添加WordPress相关说明,来访问框架父主题,也是很有必要的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*
 Theme Name:   My Theme Framework Child
 Theme URI:    
 Description:  Starter Child Theme
 Author:       Rachel McCollin
 Author URI:   http://rachelmccollin.co.uk
 Template:     wptutsplus-theme-framework-part6
 Version:      1.0.0
 Tags:         
 Text Domain:  tutsplus
*/
 
 
@import url("../wptutsplus-theme-framework-part6/style.css");

/* Theme Name: My Theme Framework Child Theme URI: Description: Starter Child Theme Author: Rachel McCollin Author URI: http://rachelmccollin.co.uk Template: wptutsplus-theme-framework-part6 Version: 1.0.0 Tags: Text Domain: tutsplus */ @import url(“../wptutsplus-theme-framework-part6/style.css”);

以上必填的字段是Theme Name(主题名称)和 Template(模板),其余的都是可填可不填。要确保Template使用的是框架主题的地址,而不是它的命名。这也将有助于完成与主题相关的其他字段。

如果你要加载架构样式表单的话,那么该@import声明也很重要。只要你把这个声明放在任何其他的CSS上,它就会在子主题样式表单的任何样式之前加载父主题样式表单,这意味着你可以在子主题框架内根据需要添加或覆盖样式。

您可能还需要使用你在子主题中最常用到的函数建立一个初始functions.php文件。然后,您可以选择将这些函数全部删除和/或根据具体项目将它们添加到主题中。

通过该框架的过滤挂钩修改代码

在给你的子主题添加样式之外,你很可能还想要更改由框架输出的代码。最轻巧的方式是通过过滤挂钩来实现,所以首先要确认你能否使用其中任何一个挂钩。

为新代码创建一个函数,再附上一个过滤挂钩,这比建立一个全新的模板文件更加有效;但是,如果你需要使用相同的过滤挂钩不断反复这样做时,你可能要考虑一下改变钩连一个动作挂钩的过滤挂钩,并为由该行动挂钩激活的每一个项目重写一个新函数。

为了更有效率,你可以创建一整套相关函数,放置在不同初始主题的函数文件中,或者使用一些函数创建一个插件,这些函数可以根据需要来激活。我将在之后的课程中更加详细地介绍到这个插件。

我在前面的课程中已经介绍过创建过滤挂钩的流程。简单说来,就是使用add_filter()函数给一个过滤挂钩附加一个函数。例如,在修改网站版权标记的链接和名称时,我创建了两个函数,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function wptp_amend_colophon_name() {
 
    $name = 'Rachel McCollin';
    return $name;
 
}
add_filter( 'wptp_colophon_name', 'wptp_amend_colophon_name' );
 
function wptp_amend_colophon_link() {
 
    $link = 'http://rachelmccollin.co.uk';
    return $link;
 
}
add_filter( 'wptp_colophon_link', 'wptp_amend_colophon_link' );

function wptp_amend_colophon_name() { $name = ‘Rachel McCollin’; return $name; } add_filter( ‘wptp_colophon_name’, ‘wptp_amend_colophon_name’ ); function wptp_amend_colophon_link() { $link = ‘http://rachelmccollin.co.uk’; return $link; } add_filter( ‘wptp_colophon_link’, ‘wptp_amend_colophon_link’ );

主题框架中的两个过滤挂钩分别是:wptp_colophon_name和wptp_colophon_link,它们都可以改变输出内容。

通过该框架的动作挂钩添加代码

你可以使用主题框架中的动作挂钩在网站的各个地方插入内容。

如果你是一直跟着本系列教程使用代码文件的,你目前就会有七个行动挂钩:

  • 在网页标题之前
  • 在网页标题之中
  • 在网页内容之前
  • 在网页内容之后
  • 在网页侧边栏中
  • 在网页页脚中
  • 在网页页脚后

例如,你想调用行动按钮添加到侧边栏,就可以新建一个sidebar.php文件,但是如果使用wptp_sidebar挂钩的话会更高效。

要做到这一点,就得在你的子主题中建立一个functions.php文件并添加以下内容:

1
2
3
4
5
6
7
8
9
function wptp_cta() {?>
 
    <div class="cta">
        <p>Email us on <a href="mailto:mail@example.com">mail@example.com</a></p>
    </div>
 
<?php
}
add_action( 'wptp_sidebar', 'wptp_cta', 1 )

function wptp_cta() {?> <div class=”cta”> <p>Email us on <a href=”mailto:mail@example.com”>mail@example.com</a></p> </div> <?php } add_action( ‘wptp_sidebar’, ‘wptp_cta’, 1 )

该 wptp_cta()函数为调用行动挂钩创建了一个标记,并通过wptp_sidebar挂钩由add_action()函数激活,因为这个挂钩优先级为1,所以它会出现在其他任何内容被触发之前。

使用动作挂钩你还可以添加大量其他的内容,比如页面内容之前/后的共享按钮、页脚中的其他内容、标题中的搜索框等等。

你可能只是想给特定的网页类型添加一些内容,比如单博客文章(single blog posts)。在这种情况下,最显而易见的方式是先新建一个single.php模板。其实,你仍然可以使用行动挂钩,外加一个条件标签就行了:

1
2
3
4
5
6
7
8
9
10
11
12
13
function wptp_after_single_posts() {
 
    if( is_singular( 'post' ) ) { ?>
 
        <h3>Enjoyed this? Try reading more!</h3>
 
        <?php
        // query to list latest blog posts here
 
    }
 
}
add_action( 'wptp_after_content', 'wptp_after_single_posts' 

function wptp_after_single_posts() { if( is_singular( ‘post’ ) ) { ?> <h3>Enjoyed this? Try reading more!</h3> <?php // query to list latest blog posts here } } add_action( ‘wptp_after_content’, ‘wptp_after_single_posts’ );

这会创建一个新的查询(使用WP_Query)——输出最新的博客文章列表,这是为了鼓励访客在阅读完一篇博客文章后再读点别的东西。该is_singular( ‘post’ ) 条件标签确保了只能输出一篇文章,并将其连接到wptp_after_content挂钩上,它会显示在主体文章的内容之后。

在你的子主题中建立新的模板文件

有时,仅仅使用过滤挂钩或动作挂钩并不能达到目的,在这种情况下,你需要在你的子主题中创建新的模板文件。

这些文件可能和存储在你的框架中的模板文件是相同的,这种情况下,在子主题中的文件将会覆盖它们。但也有可能它们是新的模板文件,例如一个新的范畴、分类或文章类型。

如果在一开始,你就在子主题中创建并使用了模板文件,事情就会变得容易得多。我遵循的步骤是:

  1. 确定你需要创建的模板文件,参照WordPress模板层次结构(WordPress template hierarchy)
  2. 在你的子主题中建立一个有相应名称的空白文件
  3. 确定框架中的文件,该文件与新文件关系最紧密(请再次参照模板层次结构)
  4. 将内容复制到你的新文件中
  5. 按要求修改新文件

这样做就不用复制任何代码,而这些代码在新文件和现有文件里是相同的,如调用包括文件(include files)。

何时使用插件

根据你的框架创建网站时,你还有一个选择是结合你的子主题使用插件。一个插件并不会完全取代子主题,但它在下列情况下会非常有效:

  • 你要添加的功能与主题无关(要保持它不变,即使将来该网站改变了主题)。这可能包括注册自定义文章类型或分类。
  • 你想在你创建的众多网站上使用某个功能,但它又不能直接添加到初始子主题或框架本身之中。

我会在下一课介绍如何为你的框架开发插件。

小结

  • 原文出自:http://code.tutsplus.com/tutorials/creating-child-themes-for-your-wordpress-theme-framework–cms-21933
  • 由  stonetan@WordPress大学 原创翻译,未经允许,禁止转载和采用本译文。

阅读该系列的其他文章: 上一篇:为你的WordPress主题框架添加过滤挂钩 下一篇:为你的WordPress主题框架开发插件

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 为你的WordPress主题框架创建子主题
分享到: 更多 (0)