最近一直都比較忙,所以也沒有時間接各種各樣的需求,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,但是在性能方法就比數據庫操作要差一些,因為每次瀏覽文章都必須在後台進行一次替換的操作。

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