最近一直都比較忙,所以也沒有時間接各種各樣的需求,WordPress 折騰得也少了,現在 WordPress 都已經升級到 3.2.1 了,那些最新的功能啊、函式啊都還沒有玩過,有點脫節,只能拿一些小問題但比較實用的方法出來分享給大家。

今天有一個朋友問了我一個關於 WordPress 的問題,需求的背景是這樣的,在他的部落格文章裡曾經插入了很多指向到 Discuz 論壇的連結,然而,自從那個 Discuz 論壇升級到 X2 以後,連結地址都改變了,導致之前在 WordPress 中插入的論壇連結都失效了。面對這樣的問題,我認為有兩種解決方案,一是從 Discuz 論壇下手,做 301 重定向,把舊的連結引向新地址;二是從 WordPress 下手,批次修改文中已經存在的連結地址。

當然,我在這裡選擇從 WordPress 下手,從 WordPress 下手也可以有兩種方法。一是從資料庫下手,二是從 WordPress 主題下手,我一一來介紹一下。

一、從資料庫下手

在資料庫裡批次替換的方法以前有介紹過,這裡再重溫一下,進入 phpmyadmin,找到你的資料表,先備份,然後執行 SQL,輸入以下語句即可:

UPDATE wp_posts SET post_content = replace(post_content, 'old','new');

其中 old 是舊的字串,new 是你要替換的文字。

二、從 WordPress 主題下手

在 WordPress 主題的 functions.php 中插入以下程式碼:

function content_str_replace($content = ''){
$content = str_replace('old', 'new', $content);
return $content;
}
add_filter('the_content', 'content_str_replace', 10);

和之前一樣,其中 old 是舊的字串,new 是你要替換的文字。

兩個方法都很簡單,但是各有各的特點。

從資料庫下手的話,優點就是一勞永逸,徹底替換所有文字內容,但是對於不熟悉資料庫的朋友還是不推薦冒然運算元據庫,就怕一失足成千骨恨。

從 WordPress 下手的話,優點就是安全,再不濟也就是把主題改壞了,重新上傳一下就 OK,但是在效能方法就比資料庫操作要差一些,因為每次瀏覽文章都必須在後臺進行一次替換的操作。

所以,到底選擇哪個方法,就需要看官們自己衡量了。