A 儿童主题是一个主题,它继承了另一个主题(称为父主题)的功能和样式。儿童主题是推荐修改现有主题的方式。
如何创建一个子主题
- 创建儿童主题目录(至名儿童主题作为父主题加上柴尔德常用的方法加在末尾。)
- 创建style.css
- 创建functions.php
样式表必须与以下(样式表头)开始:
/*
Theme Name: XYZ Child Theme
Theme URI: http://example.com/themes/spacious/
Description: XYZ Child theme
Author: ABC
Author URI: http://example.com
Template: XYZ
Version: 1.0
*/
/* =Theme customization starts here
------------------------------------------------------- */
几件事情要注意:
- 您将需要更换的细节示例文本与你的主题相关。
- 模板行对应于父主题的目录名称,因此进行相应调整。
的最后一步是排队内部的functions.php家长和儿童主题样式表是这样的:
add_action('wp_enqueue_scripts', 'enqueue_parent_styles');
function enqueue_parent_styles() {
wp_enqueue_style('parent-style', get_template_directory_uri().'/style.css');
}
最后,激活子主题,在仪表板去Appearance->主题。寻找你创建的孩子主题并激活它。而已。另外,确保父主题也存在于已安装的主题中,以使子主题正常工作。如果你现在访问你的网站,它应该看起来都一样,就像当父主题被激活时一样。
现在,您可以在没有任何问题的情况下对您的孩子主题进行更改!
如果你想修改父主题的功能,那么你可以简单地将其括在有条件的标签,以检查是否存在该名称已经运行的函数:
<?php
if (! function_exists ('my_function')) {
function my_function() {
// Contents of your function here.
}
}
?>
所以,如果你包围功能您在这样的条件标签中的父主题,WordPress会检查你的子主题中是否有一个与已经运行的名字相同的函数,如果是这种情况,它将不会从父主题运行函数。
然后,当你来写你的子主题要覆盖一个父主题的功能,你只要给它相同的名称作为一个父主题:
<?php
function my_function() {
// Contents for your function override here.
}
?>
WordPress会首先在子主题中运行该函数,当涉及到父主题中的函数时,它将检查它是否已经存在,并且因为它确实存在,它将不会运行它。
如果你不希望碰父母的functions.php那么你可以:
分配子主题功能更高的优先级:
add_action('init', 'child_function', 15);
删除父主题从钩子函数:
remove_action('init', 'parent_function');
您是上帝谢谢你对此详细回答! (我upvoted你的答案) – Nayzen
谢谢!仅供参考,我不是上帝。我只是一个像你一样的人,差别只是经验。我已经做了几年这些事情,现在你正在做。所以,不要担心并继续挣扎。有一天,你会在这个阶段或者甚至比这更好! :) –
你是对的!你有一个良好的精神,再次感谢你惊人的答案,我希望能够在今后帮助别人,就像你今天为我做的:)顺便说一句,我陷入了其他问题,包括做同样的,但与.css文件,我已经在这里打开了一张票https://stackoverflow.com/questions/44627617/wordpress-stylesheet-child-theme – Nayzen