使用wordpress建站时,一般会使用现成的主题,有时候现有主题又不能完全满足自己的需求,但是又不想在现有主题上直接修改怎么办?亦或者PC端和手机端是相同的url地址,想使用两套主题而不是做成响应式,手机端又该如何只修改样式而共享PC端主题的功能呢?不要慌,wp子主题就能很好的解决你的困扰。
一、什么是wordpress子主题呢
子主题继承了父主题的样式和功能,修改子主题不会影响父主题,这样做的好处是你不用重复造轮子,直接完成父主题里没有的功能即可,还有就是父主题更新了也不会影响子主题。
二、怎么创建wp子主题呢
1、创建一个子主题文件夹
在wp-content/themes下创建一个用来存放子主题文件的文件夹,命名的话最好是和父主题文件夹相同,然后在最后加上“-child”即可,这样一眼就能看出来这个子主题的父主题是哪个。
2、创建一个样式文件
创建一个名称为style.css的样式文件,这个文件的头部可以包含这些信息
/* Theme Name: Twenty Fifteen Child Theme URI: http://example.com/twenty-fifteen-child/ Description: Twenty Fifteen Child Theme Author: John Doe Author URI: http://example.com Template: twentyfifteen Version: 1.0.0 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Tags: light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready Text Domain: twentyfifteenchild */
其中有两项是必须的
Theme Name:主题名称,这个名称需要是唯一的
Template:父主题所在目录的名称
3、把创建的样式文件添加到网站里
有三种方式来添加样式文件,需要在主题的functions.php里添加
①在父主题里添加父主题和子主题的样式文件,子主题不用再添加
②如果父主题是通过get_template方式添加的样式文件,比如get_template_directory() 和 get_template_directory_uri(),那么子主题只需要添加自己的样式文件即可
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' ); function my_theme_enqueue_styles() { wp_enqueue_style( 'child-style', get_stylesheet_uri(), array( 'parenthandle' ), wp_get_theme()->get('Version') // this only works if you have Version in the style header ); }
③如果父主题是通过get_stylesheet方式添加的样式文件,比如get_stylesheet_directory() 和 get_stylesheet_directory_uri(),那么子主题就需要把父主题和自己的样式文件都添加进去
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' ); function my_theme_enqueue_styles() { $parenthandle = 'parent-style'; // This is 'twentyfifteen-style' for the Twenty Fifteen theme. $theme = wp_get_theme(); wp_enqueue_style( $parenthandle, get_template_directory_uri() . '/style.css', array(), // if the parent theme code has a dependency, copy it to here $theme->parent()->get('Version') ); wp_enqueue_style( 'child-style', get_stylesheet_uri(), array( $parenthandle ), $theme->get('Version') // this only works if you have Version in the style header ); }
三、添加主题模板文件
在子主题里添加的文件会覆盖掉父主题里同名的文件,除了functions.php。当然了,你也可以在子主题里添加父主题里没有的模板文件。
通过以上步骤,便可以成功创建wordpress子主题了。