學習筆記

【WordPress】如何建立子佈景?(Child Theme)

為什麼要建立子佈景(Child Theme)

最近在修改自己的佈景主題,要加入一些自己想要的樣式,雖然可以在WordPress裡面加入CSS的語法,就可以讓佈景加入自己需要的樣式,然而如果佈景有更新的時候,你所加入的CSS語法就會被覆蓋掉,所以當你如果需要大量修改你的佈景的時候,建議可以建立子佈景,這樣當主佈景更新的時候,子佈景也能繼續繼承主佈景的功能,並且以子佈景進行擴充。

子佈景的檔案概念

首先,子佈景一定要至少style.css、functions.php、screenshot.png這三個檔案,這是必須存在的。

接著說明子佈景的檔案邏輯

style.css為主題的樣式檔,在WordPress的裡,會先載入主佈景的CSS樣式檔,接著再載入子佈景的CSS,所以你所加入的子佈景樣式就會疊在主佈景的樣式,當有相同的設定的時候,子佈景就會覆蓋主佈景的樣式。
functions.php為佈景所使用的函式庫,在WordPress的裡,會先載入子佈景的functions.php,接著再載入主佈景的。
最後是在子佈景裡的其他檔案,都會直接覆蓋掉主佈景的檔案,例如:主佈景當中有header.php,子佈景也有header.php,那麼子佈景的header.php就會直接蓋掉主佈景的。

建立子佈景

WordPress的佈景路徑為/wp-content/themes/,在這裡面一定會先擁有你的主佈景路徑,接著你可以新增一個資料夾,建立子佈景的路徑

childthemepath.

以範例來說,我的主佈景為 lotuslite子佈景的資料夾為我取名為lotuslite-child-for-lastnight,因此你可以在我的/wp-content/themes/看到這兩個檔案

接著可以在子佈景的資料夾底下建立第一個檔案style.css

style.css檔案當中必須包含子佈景主題的標頭如下


/*
Theme Name: Lotuslite Child for lastnight
Author: Zoey Gao
Author URI: https://lastnight.tw/
Description: Lotuslite Child for lastnight
Template: lotuslite
Version: 1.5.1
*/

Theme Name:子佈景的名稱
Author:子佈景的開發者
Author URI:開發者的網站
Description:對這個子佈景的說明
Template:你的主佈景的名稱(如果你是建立子佈景一定要填寫,才可以繼承主佈景)
Version:版本號

標頭填寫完成以後底下就可以加入你要的CSS樣式語法。

完成樣式以後我們接下來要建立functions.php,本篇不介紹新增函式庫的用法,因此我們引用下面的程式碼就可以直接引入主佈景的函式庫


<?php
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
function my_theme_enqueue_styles() {
$parent_style = 'parent-style';
wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( $parent_style ), wp_get_theme()->get('Version'));
}
?>

最後是screenshot.png,你可以使用原本的主佈景的圖再加上一些說明來作為子佈景的主題。

完成這三個檔案以後,到WordPress後台裡選擇外觀>佈景主題,就可以看到你剛剛建立的子佈景,按下啟用。

結論

你的佈景常常因為更新而覆蓋了你所修改的CSS嗎?那建議你也可以使用子佈景的方式來擴充你的樣式,就可以客製化出自己喜歡的佈景主題囉!

如果你對子佈景也很有興趣想要更多認識,你也可以到WordPress的開發文件中認識更多的子佈景的介紹。