升級了 WordPress 版本順便換掉了佈景主題

很久沒有升級 WordPress 了,就從原本 4.9 的 branch 切換到 5.9 來。原本已經有其它的 blog 已經在 5.2,所以對於這個新的區塊編輯器還不算太陌生,不過就得和使用多年的佈景主題 Atahualpa 道別了。部分外掛程式也尋找替代品,特別是商業版本的外掛程式需要設法修好或棄用,這也是不得不為之的汰換,長時間停留在舊版本也不知道會不會有安全問題。

原本使用的 Atahualpa 是個能夠高度客製化的佈景主題,比起 WordPress 官方提供的自訂功能還要能自訂各種細節部分,並且原生支援各種原本需要手動修改程式碼才能運作的套件如 WP-PageNavi,最重要的是它本身是 fluid layout,可以讓版面佔滿整個螢幕,不像其它佈景主題都會在左右留下超大片的空白浪費很多螢幕的空間。總而言之隨著 WordPress 對安全性的要求提高且發現了它存在 XSS 攻擊漏洞,加上 Atahualpa 的作者越來越沒有時間繼續維護它,最後官方就選擇放生了。官方討論區在 2021 年初還是有勉強做一些修補,但也只保證大部分功能可以正常運作在 WordPress 5.5 上,在當年 9 月官方討論區最上方出現了一串黃字公告:

There will be no more development for Atahualpa (or any other theme), and no support. Also no new registrations. I turned off the donation system. I may turn the forum to read only if it gets abused for spam. Unfortunately I have no time for the forum or the themes. Thanks a lot to the people who helped in all these years, especially Larry and of course: Paul. Take care and stay healthy -- Flynn, Atahualpa developer, Sep 2021

簡單說就是他們連討論區也不想維護了,打算把討論區改成唯讀模式並關閉捐款系統。既然官方已經把話說得這麼明白,就只好另尋新的佈景主題了。

尋找的過程中發現 WordPress 官方也不再提供 fluid layout 的篩選條件,大概是這種排版方式過時了,只剩下 full width template 可以選擇。另外自從 WordPress 5.8 開始還提供了一個叫 full site editing 的功能。這個功能需要佈景主題支援它,但勾選這個篩選條件會發現目前支援這功能的佈景主題還相當有限,而且這些佈景主題大都喜歡把 blog 的文章列表弄成一格一格的方塊式排列,不是很習慣這麼前衛的排版方式,所以還是退而求其次從 full width template 裡面找,最後找到了這個叫 Havan 的佈景主題,並且因為需要自訂不少東西,所以去它們家官網買了商業版本。

WordPress 5.9 的側邊欄小工具的放法也是全新的模式,直接把小工具加進去的話是不會有大標題的,得新增一個小工具群組再把小工具加進裡面,這樣才能做出像舊版那樣緊鄰在小工具上面的標題出來。不過因為我是透過升級的方式升上來的,看起來可以直接以舊版小工具的形式繼承下來,所以不用花時間去重新搞這些麻煩的東西。而且不得不說新版本的日曆長得有夠難看,而且在 Havan 這個佈景主題下,把開啟階層顯示模式的分類小工具新增到小工具群組裡的話,子分類還會完全沒有縮排,得去替它加上額外的 CSS 類別名稱才行。

用慣的 Special Text Boxes Pro 也是作者老早失蹤了,說實話很多 WordPress 的商業版外掛用久了都會有作者不再更新的問題,不過它的免費版本在 WordPress 的官方討論區裡還有一些善心人士在提供從 PHP 5.6 更新到 PHP 7.2 遇到問題時的解決方式,因此問題還算可以解決。至於 css/stb-pro.css.php 裡有個函式 sanitize_option() 重複定義的問題,看起來直接註解掉這個函式就可以解決了,看起來在免費版本不會遇到。其實我對這個作者的行為也有點感冒,原本這個外掛也沒有什麼商業版本,只是它有一個可以上傳自訂佈景主題的功能有安全漏洞,就是只要知道上傳程式的 php 檔路徑,任何人都能上傳任意程式到網站上,因此就能拿架站的主機來發垃圾信。當時 WordPress 官方因為這個漏洞把這個外掛下架,而原作者的處理方式就是覺得 WordPress 莫名其妙,所以另外在自己網站上擺了一個不受 WordPress 官方規範的版本來賣,也沒有想修這個上傳任意程式漏洞的打算,可以說是個很糟糕的鴕鳥心態。總而言之因為這個功能我用不到而且作者也沒打算修,我就直接把 chmod 000 stb-pro-uploader.php 沿用這個外掛至今。到現在還是偶爾會從 nginx 的 access log 看到有奇怪的程式會嘗試直接 POST 東西到這個檔案來吃到 403 回應,所以這個作者從這世上消失了也不意外,大概在哪家公司出了大包被開除流落街頭去了吧。

至於這網站上用來做 syntax highlight 的外掛 Crayon Syntax Highlighter 也是一樣作者沒繼續維護了,它本身其實算是還能運作的,只是到了 WordPress 5.0 後跟這新版的區塊編輯器結合上有一些問題,一樣在 WordPress 的官方討論區裡有熱心人士 axew3 做了一些修正放在他自家網站上,因此這個外掛還是勉強苟活了下來。說實話要找到功能和這套差不多的 syntax highlighter 還真的很難,Google 爬了一堆垃圾文章都沒有找到什麼好的替代品。比較有機會的候選外掛是看起來 wordpress.com 推薦使用者裝的那套 SyntaxHighlighter Evolved,如果哪天 Crayon Syntax Highlighter 真的完全死透了,就得好好評估一下看要不要換過去。

總而言之這次久違的升級花了我一整天的時間還有 129 美金,能只花一天就處理完也是因為這網站本身沒什麼複雜功能,如果要去升其它奇奇怪怪的站恐怕就沒這麼簡單了。