最近一直都比较忙,所以也没有时间接各种各样的需求,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,但是在性能方法就比数据库操作要差一些,因为每次浏览文章都必须在后台进行一次替换的操作。

所以,到底选择哪个方法,就需要看官们自己衡量了。