wordpress子主题

使用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子主题了。

发表评论