经常被问到如何修改 WordPress 已经写入数据库中的文章链接地址,通常都是http升级到https,替换资源链接等需求。
其实很简单,执行一条 SQL 命令,以 http 升级 https 时的操作为例,在数据库执行以下 SQL 语句:
- UPDATE wp_posts SET post_content = REPLACE( post_content, ‘https://www.liwei8090.com’, ‘https://www.liwei8090.com’);
同时我也给 WordPress 和 腾讯 COS 上传插件中增加了替换功能,不用写 SQL,只需要填入对应的域名就行
怎么做到的呢,WordPress 为用户提供了一系列用于数据库操作的函数类:wpdb
$wpdb
是 WordPress 提供的一个全局变量,该全局变量是负责与 WordPress 数据库交流的类的实例化
你可以通过 query 函数在 WordPress 数据库中执行任何 SQL 语句
函数返回一个与选定内容的行数相应的整数。如果发生 MySQL 错误,函数返回 FALSE
在自定义函数中调用时需要声明引用全局变量$wpdb
- global $wpdb;
- $table_name = $wpdb->prefix .’posts’;
- $oldurl = $_POST[‘old_url’];
- $newurl = $_POST[‘new_url’];
- $result = $wpdb->query(“UPDATE $table_name SET post_content = REPLACE( post_content, ‘$oldurl’, ‘$newurl’) “);
- echo ‘替换成功!共批量执行’.$result.’条!’;
就这样,一个插件中增加替换链接的功能就完成了