我有以下临时过滤器来修复内容错误。我们的帖子中有4位邮政编码的数据,因为在创建原始文件时,前导零被剪切了。(例如,马萨诸塞州的邮政编码是0XXXX,但现在在我们的内容中是XXXX)
function fix_zip_code($content){
if (preg_match(\'/<span class="postal-code">(\\d{4})<\\/span>/i\',$content, $match)){
$content = str_replace($match[0],\'0\'.$match[0],$content);
}
return $content;
}
add_filter(\'the_content\', \'fix_zip_code\');
如何一次将该过滤器应用于所有内容并重新保存帖子,以便完全删除regex过滤器?
最合适的回答,由SO网友:goldenapples 整理而成
//run once
$allposts = get_posts(\'post_status=publish&numberposts=-1\');
foreach ($allposts as $thispost) {
wp_update_post( array(
\'ID\' => $thispost->ID,
\'post_content\' => fix_zip_code($thispost->post_content)
)
);
}
但正如Rarst所提到的,在做任何事情之前备份数据库。。。