根据服务器及其配置,在不更改文件名的情况下更改路径大小写可能会中断链接。
但是为了直接回答这个问题,您可以使用MySQL\'s REPLACE
and LOWER
, 但我建议不要这样做。MySQL有一些regex功能,但不多。到目前为止,PHP的正则表达式更好。
拉起你的帖子,在上面打圈,然后固定链接。运行以下操作:
function replace_cb($matches) {
if (!empty($matches[1])) {
return \'src="\'.strtolower($matches[1]).\'"\';
} else {
return $matches[0];
}
}
function reset_paths() {
global $wpdb;
// debug using a specific post ID
// $posts = $wpdb->get_results("SELECT ID,post_content FROM {$wpdb->posts} WHERE ID = 128");
// remove the where for a real run over all posts
$posts = $wpdb->get_results("SELECT ID,post_content FROM {$wpdb->posts}");
$pattern = \'|src="([^"]+)"|\';
foreach ($posts as $p) {
define( \'DOING_AUTOSAVE\', true );
$p->post_content = preg_replace_callback($pattern,\'replace_cb\',$p->post_content);
wp_update_post($p);
}
}
reset_paths(); // run the function
reset_paths();
在函数定义下面是触发它的因素--实际运行函数的因素。
但在生产中尝试之前,请使用一次性数据在dev服务器上进行备份和彻底测试。
如果你有很多帖子,你可能会有超时或内存问题,所以要注意这一点。如果确实存在问题,则必须以增量方式运行该函数。
假设您的标记是一致的。现在,它将替换属性被单引号包围的图像“URL”。