子主题,Child Theme一些细节


Updated on: August 28, 2020 in Wordpress by

如果激活了child theme ,wp 首先加载的是child theme. 

child them 就是为了避免让你在主题文件上更改导致无法还原的现象,chilld-theme 有一切主题的功能,  在child-theme创建文件可以更改主题的任何功能。 

child-theme 要在style.css 里面头部加上 template: 名字为父级主题的名字。 child theme的text domain  可以命名为 protheme-child 这种。 

child-theme可以接收父级主题所有功能性文件。比方说自定义函数之类。 child-theme只要一个style.css 就可以。 如果也增加了index.php那就是重写主题。 

在child-theme里面引用其他文件的 路径函数是 : get_stylesheet_directory(). uri函数是 : 

 get_stylesheet_directory_uri() 

get_stylesheet_uri 是针对当前目录当前主题, 包括子主题,如果要一直定义的路径是父主题, 就用到get_template_directory_uri() ; 

child theme 的functions.php 不会覆盖父主题的 functions.php ,只会延伸, 可以把父级主题一些功能性函数全部移到child theme上, 这样不会因为主题升级而丢失

Create a stylesheet: style.css #  高亮处为必须添加: 

/*Theme Name:   Twenty Fifteen ChildTheme URI:    http://example.com/twenty-fifteen-child/Description:  Twenty Fifteen Child ThemeAuthor:       John DoeAuthor URI:   http://example.comTemplate:     twentyfifteenVersion:      1.0.0License:      GNU General Public License v2 or laterLicense URI:  http://www.gnu.org/licenses/gpl-2.0.htmlTags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-readyText Domain:  twentyfifteenchild*/

Using functions.php #

Using functions.php

Unlike style.css, the functions.php of a child theme does not override its counterpart from the parent. Instead, it is loaded in addition to the parent’s functions.php. (Specifically, it is loaded right before the parent’s file.)

In that way, the functions.php of a child theme provides a smart, trouble-free method of modifying the functionality of a parent theme. Say that you want to add a PHP function to your theme. The fastest way would be to open its functions.php file and put the function there. But that’s not smart: The next time your theme is updated, your function will disappear. But there is an alternative way which is the smart way: you can create a child theme, add a functions.php file in it, and add your function to that file. The function will do the exact same job from there too, with the advantage that it will not be affected by future updates of the parent theme. Do not copy the full content of functions.php of the parent theme into functions.php in the child theme.

The structure of functions.php is simple: An opening PHP tag at the top, and below it, your bits of PHP. In it you can put as many or as few functions as you wish. The example below shows an elementary functions.php file that does one simple thing: Adds a favicon link to the head element of HTML pages.
<?php // Opening PHP tag - nothing should be before this, not even whitespace// Custom Function to Includefunctionmy_favicon_link() {echo<link rel="shortcut icon"type="image/x-icon"href="/favicon.ico"/>' . "\n";}add_action( 'wp_head''my_favicon_link');

Referencing or Including Other Files #

Referencing or Including Other Files

When you need to include files that reside within your child theme’s directory structure, you will need to use get_stylesheet_directory(). Since the style.css is in the root of your child theme’s subdirectory, get_stylesheet_directory() points to your child theme’s directory (not the parent theme’s directory). To reference the parent theme directory, you would use get_template_directory() instead.

Below is an example illustrating how to use get_stylesheet_directory() when referencing a file stored within the child theme directory:1<?php require_once( get_stylesheet_directory(). '/my_included_file.php'); ?>

Meanwhile, this example uses get_stylesheet_directory_uri() to display an image that is stored within the /images folder in the child theme directory.1<img src="<?php echo get_stylesheet_directory_uri(); ?>/images/my_picture.png"alt=""/>

Unlike get_stylesheet_directory(), which returns a file path, get_stylesheet_directory_uri() returns a URL, which is useful for front-end assets.