批量搜索WordPress正文内容并替换

采集内容后,如果发现正文内容存在某些统一字符需要批量替换或删除,最好的方式还是通过数据库来批量执行,以下代码供参考,请根据自己的项目实际情况修改适配之:

global $wpdb;
$posts = $wpdb->get_results(
	"SELECT * FROM $wpdb->posts WHERE post_type = 'radio' AND post_content REGEXP '<a' LIMIT 10;"
);
foreach ($posts as $post) {
	$new_content = str_replace('旧的的字符串', '新的字符串', $post->post_content);
	wp_update_post(['ID' => $post->ID, 'post_content' => $new_content]);
}

在这个例子中,我们并没有直接执行数据库语句,而是采用了 php 并结合了 WordPress 原生函数来更新主要是考虑到项目实际用途,方便在插件或主题中执行,同时采用WordPress默认函数执行更新,可以触发对应的钩子,以避免直接操作数据库造成某些高度定制化的WordPress站点无法同步对应操作。

直接执行数据库的方式则如下:

UPDATE wp_posts SET post_content = REPLACE( post_content, '旧内容', '新内容' );