WordPress批量删除失效链接图片,删除指定外链图片的方法有多种,以下是两种方法:
使用WordPress插件:
更安全、更用户友好的方法是使用WordPress插件来批量替换或删除外链图片。
VelvetBlues Update URLs:允许您批量替换文章和页面内容中的URL。
Search and Replace在数据库中搜索和替换文本,包括URL。
Broken Link Checker:可以自动去检查你网站中几乎所有地方的链接是否失效,包括站内或站外链接,还支持手动修改或删除失效的链接。不过文章内容比较大的情况下,非常耗时间。
使用PHP脚本:
编写一个PHP脚本来遍历所有发布的内容(文章和页面),并删除指向特定域名的图片标签。
在根目录下创建一个新的PHP文件,例如remove_external_images.php 。
编写脚本,在remove_external_images.php 文件中,输入以下PHP代码:
<?php
// 引入WordPress的核心文件,确保可以访问WordPress的函数和变量
require_once('wp-load.php');
// 设置脚本执行的时间限制为无限制,以防处理大量数据时超时
set_time_limit(0);
// 全局声明 $wpdb 对象,它是WordPress用于数据库操作的类
global $wpdb;
// 设置每次查询的文章数量(批次大小)
$batch_size = 100;
// 设置查询的起始位置(偏移量),用于分页查询
$offset = 0;
// 记录已更新的文章数量
$updated_count = 0;
// 使用do-while循环来分页查询所有已发布的文章和页面
do {
// 准备SQL查询语句,使用$wpdb->prepare来防止SQL注入
// 查询语句获取指定类型的已发布文章和页面的ID和文章内容
$query = $wpdb->prepare("SELECT ID, post_content FROM wp_posts WHERE post_type IN ('post', 'page') AND post_status = 'publish' LIMIT %d OFFSET %d", $batch_size, $offset);
// 执行查询并获取结果
$posts = $wpdb->get_results($query);
// 遍历查询结果中的每篇文章
foreach ($posts as $post) {
// 获取文章的内容
$content = $post->post_content;
// 定义正则表达式模式,用于匹配指向特定域名的图片标签
$pattern = '/<img[^>]+src=["\']https://picture.domain.com/[^"\']*/i';
// 使用preg_replace函数删除匹配的图片标签
$new_content = preg_replace($pattern, '', $content);
// 如果文章内容有变化(即删除了图片标签)
if ($new_content !== $content) {
// 更新文章内容
$wpdb->update(
$wpdb->posts, // 指定要更新的表
[
'post_content' => $new_content // 更新后的内容
],
['ID' => $post->ID] // 更新条件,根据文章ID更新
);
// 增加已更新的文章计数器
$updated_count++;
}
}
// 增加偏移量,以便下一次查询下一批文章
$offset += $batch_size;
// 暂停执行一段时间(100,000微秒=0.1秒),以减少对服务器资源的消耗
usleep(100000);
} while (!empty($posts));
// 输出已更新的文章数量
echo '已更新 ' . $updated_count . ' 篇文章,移除了图片。';
运行PHP脚本如果
您可以通过SSH连接到您的服务器,您可以使用命令行来运行这个脚本:
php /path/to/your/wordpress/remove_external_images.php 。
以上就是在WordPress中批量删除失效链接图片的两种方法,希望对你有所帮助。