WordPress 佈景主題 (我用的是 Catch Box) 升級完成卻發生之前有修改過的檔案被刪除掉的問題.
- WordPress 中文化 – https://benjr.tw/10959
中文化會修改到 wp-content/themes/catch-box/languages/zh_tw.po 以及 zh_tw.mo - 在 WordPress 使用 Facebook 讚的連結 – https://benjr.tw/10898
設定 Facebook 連結會修改到 /wp-content/themes/catch-box/single.php - WordPress 固定網址設定 – https://benjr.tw/10918
WordPress 固定網址會修改 wp-content/themes/catch-box/single.php
但升級後這些設定都會不見,所以下次升級佈景主題前記得要先備份起來,要不然欲哭無淚.或是可以使用 Child Themes 來解決這個問題.
Child Themes 的做法也很簡單,目前我用的是 catch-box
- 建立一個新目錄 catach-box-child (WordPress 建議使用 -child 做為結尾)
root@Benjr:~# cd /var/www/benjr/wp-content/themes/ root@Benjr:/var/www/benjr/wp-content/themes# mkdir catch-box-child
-
在 新目錄 catach-box-child 建立 style.css ,檔案內容只需要下面幾行.
root@Benjr:/var/www/benjr/wp-content/themes# cd catch-box-child/ root@Benjr:/var/www/benjr/wp-content/themes/catch-box-child# vi style.css /* Theme Name: Catch-Box Child Template: catch-box */ @import url("../catch-box/style.css"); /* =Theme customization starts here -------------------------------------------------------------- *
Theme Name:
隨便取個名字
Template:
這個要注意一下不能隨便亂填,需要的是 Parent(父) theme 的名稱
@import url
這個則需要 Parent(父) theme 的路徑,因為在上一層,所以用 ../ 來指示. -
接下來把你在 Parent(父) theme 有修改過的檔案都放置到 Child theme 這邊
- single.php (在 WordPress 使用 Facebook 讚的連結,WordPress 固定網址設定)
root@Benjr:/var/www/benjr/wp-content/themes/catch-box-child#cp ../catch-box/single.php ./
- languages/zh_tw.po 以及 languages/zh_tw.mo (WordPress 中文化)
<-- 目前這個也不知道為什麼沒有生效. - functions.php
functions.php 比較特別我們可以直接在新的 Child Theme 加入 php 的程式,不用複製原本 Parent(父) theme 的 functions.php 再來修改.不同其他設定檔,在子主題的 functions.php 文件不會覆蓋於父主題與其對應。下面是針對 Child Theme 的 languages 做修改 (參考官方網站 http://codex.wordpress.org/Child_Themes#Internationalization ),
不過一樣有問題.root@Benjr:/var/www/benjr/wp-content/themes/catch-box-child#vi functions.php <?php /** * Setup My Child Theme's textdomain. * * Declare textdomain for this child theme. * Translations can be filed in the /languages/ directory. */ function my_child_theme_setup() { load_child_theme_textdomain( 'catch-box', get_stylesheet_directory() . '/languages' ); } add_action( 'after_setup_theme', 'my_child_theme_setup' ); ?>
程式碼主要只有兩行,我們來看看內容
add_action( 'after_setup_theme', 'my_child_theme_setup' );
add_action( $hook, $function_to_add, $priority, $accepted_args )
- $hook
The name of the action to which $function_to_add is hooked. (See Plugin API/Action Reference for a list of action hooks).
第一個參數是 hook ,內容是 after_setup_theme
在 wordpress 定義了 http://codex.wordpress.org/Plugin_API/Action_Reference 後面指令的程式碼使用時機,這邊所設定的是 after_setup_theme ,什麼是 after_setup_theme 呢!!
Generally used to initialize theme settings/options. This is the first action hook available to themes, triggered immediately after the active theme’s functions.php file is loaded. - $function_to_add ,內容是 my_child_theme_setup 也就是你相對應的程式碼函數名稱.
function my_child_theme_setup() { load_child_theme_textdomain( 'catch-box', get_stylesheet_directory() . '/languages' ); }
my_child_theme_setup() 剛剛在 add_action , 所定義的函數庫名稱.
load_child_theme_textdomain ( string $domain, string $path = false )
就是載入 child theme 的 翻譯字串函數.
其相對應的參數使用- $domain
Parent theme 的名稱,我用的是 catch-box. - $path
.mo 翻譯檔案的位置
- $hook
- single.php (在 WordPress 使用 Facebook 讚的連結,WordPress 固定網址設定)
沒有解決問題,試試搜尋本站其他內容
更新前建議還是要先備份一下資料,請參考 WordPress Backups 的資料