Child Theme 是用来改写主题的一个好方法。 对于很多收费主题来说,主题作者都会有或多或少的更新,比如主题框架功能的更新完善。 我们自己定制化后的这些主题,更新以后会丢失定制化的部分,所以选择child theme方式来定制这类主题,是个不错的方式。
Child Theme的编写基本规则:
1. Child Theme的文件位置
跟普通theme主题一样,都位于wp-content/themes下面。
2. Child Theme的文件结构
Child Theme对文件的要求要简单一些, 只有style.css是必需的,别的文件都是可有可无的。 具体如下:style.css (必需) functions.php (可选) Template files (可选) Other files (可选)
3. style.css文件结构要求
以给默认主题Twenty Eleven写Child Theme为例:
/* Theme Name: Twenty Eleven Child Theme URI: http: //example.com/ Description: Child theme for the Twenty Eleven theme Author: Your name here Author URI: http: //example.com/about/ Template: twentyeleven Version: 0.1.0 */
其中两项是必需的, 第一项是Theme Name, 也就是你这个Child Theme的主题名。 第二项是Template,也就是说你这个Child Theme的Parent Theme是谁。
注意这里的Template是父主题的文件夹的名字,并且是区分大小写的。
4. style.css如何写
Child Theme的style.css跟Parent Theme的关系是完全覆盖的, 也就是说如果你启用了Child Theme, 父主题的style.css里面的样式就不被调用了。 因为对于style.css来说,我们需要引入父主题的style.css内容。代码如下:
/*
Theme Name: Twentyeleven Child
Description: Child theme for the twentyeleven theme
Author: Your name here
Template: twentyeleven
*/
@import url("../twentyeleven/style.css");
#site-title a {
color: #009900;
}
5. Child Theme的functions.php怎么写
Child Theme和Parent Theme的functions.php不是覆盖关系,所以我们可以只在子主题的functions.php里加入父主题没有定义过得函数。 例如给网站加 favicon图标:
function favicon_link() {
echo '<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />' . "\n";
}
add_action('wp_head', 'favicon_link');
6. get_stylesheet_directory()获取当前stylesheet路径
Parent Theme中我们通常使用get_bloginfo(‘stylesheet_directory’); Child Theme中我们使用get_stylesheet_directory()来获取stylesheet路径。
7. 其他Child Theme模板文件如何写
Child Theme的其他模板会覆盖掉Parent Theme的同名模板, 如果你想定制某个模板比如home.php,你可以复制到Child Theme目录然后进行修改。 另外Child Theme里面创建的Parent Theme中没有的模板,在后台页面编辑时,也可以进行选择。 例如我们希望创建一个新的页面模板page-about.php,来专门用于about页面。我们可以在子主题里创建该文件,并定制里面的代码。