今天修改了一张图片的名字,以为在数据库里同步修改就行了,结果不是那么回事,在wp_postmeta表中有个meta_key字段保存了一个附件的元数据,meta_key的值是_wp_attachment_metadata,对应的meta_value是附件的元数据,如下图所示:
这个元数据是不能直接编辑的,要用代码生成,代码如下:
// 获取附件ID
$attachment_id = 3261; // 请根据实际的附件ID修改
// 获取附件元数据
$metadata = wp_get_attachment_metadata( $attachment_id );
// 修改文件路径和文件名
$new_file = '2023/08/zaochencongzhongwukaishi.jpeg'; // 新的文件路径
$metadata['file'] = $new_file;
// 修改各个尺寸的路径(如果有需要)
foreach ( $metadata['sizes'] as $size => $size_data ) {
$metadata['sizes'][$size]['file'] = str_replace('zaochenchongzhongwukaishi', 'zaochencongzhongwukaishi', $size_data['file']);
}
// 更新附件元数据
wp_update_attachment_metadata( $attachment_id, $metadata );
注意在执行这段代码前,不要动原来的元数据。
可以把这面代码放在functions.php里执行,或者放到某个插件代码文件里执行都行。
补充:附件ID需要到wp_posts表找。