批量更改WordPress媒体URL

photo of a computer screen displaying a blog with highlighted media URLs, a magnifying glass hovering over one URL, and a digital pen ready to edit it.

有时候我们的WordPress站点更换域名后,媒体库中的URL链接还是老域名地址。

还有的站长不想把图片什么的媒体文件放在虚拟空间中,想放在速度比较快的图床中。

……

如何批量更改媒体库中文件的URL链接地址呢?

网上找寻答案,会发现一些更新日时为两三年前的文章,指出可以安装一些插件来解决。只是笔者验证后,发现皆在现在的版本(6.3.2)中不可用了。

可能还是需要回归到最根本的解法——直接于数据库批量修改。网上有些反馈文章说数据库批量修改也容易有遗漏,那我们只能尽量排查干净了。

wp_options

在WordPress中,wp_options表主要用于存储站点的设置选项,而不是单个附件的URL。通常,单个附件的URL存储在wp_posts表的guid列,而附件的路径信息存储在wp_postmeta表中。

然而,wp_options表中有两个选项upload_pathupload_url_path,可以用于控制媒体文件的默认上传路径和URL。这些选项在WordPress 3.5版本之后被隐藏,但仍然可以通过数据库直接修改它们,或使用自定义代码来访问和修改它们。

如果想改变媒体文件的默认上传路径和URL,可以尝试以下步骤:

直接在数据库中修改

  • 打开wp_options表。
  • 查找option_name列为upload_pathupload_url_path的行。
  • 修改option_value列以反映想要的新路径和URL。

兹以upload_url_path为例说明一下数据表相关字段与其他可能的配置方式:

  1. option_id (阿拉伯数字,例如“55”):
    • 这是该选项记录的唯一标识符,用于在数据库表中唯一标识此记录。
  2. option_name (upload_url_path):
    • 这是选项的名称,它告诉WordPress这个记录是关于什么的。在这种情况下,它是关于上传URL路径的。
  3. option_value (一串URL):
    • 这是选项的值。通常为。这个字段应该包含媒体文件的基本URL,例如http://sanguok.com/uploads
  4. autoload (yes):
    • 这个字段告诉WordPress是否应该在每个页面加载时自动加载这个选项的值。如果设置为yes,WordPress将在加载时自动从数据库中获取这个选项的值,这可以提高性能,因为它减少了数据库查询的次数。

使用自定义代码

  • 可以在主题的functions.php文件或自定义插件中添加代码,来程序性地修改这些选项。
   update_option( 'upload_path', 'your-new-path' );
   update_option( 'upload_url_path', 'your-new-url' );

在做任何更改之前,务必备份数据库和网站,以防止可能的数据丢失或损坏。

wp_posts表与wp_postmeta

在WordPress中,每个附件的URL存储在wp_posts表的guid列中。同时,附件的元数据,包括文件路径等信息,存储在wp_postmeta表中。wp_postmeta表中的meta_key_wp_attached_file的记录保存了附件文件的相对路径,而meta_key_wp_attachment_metadata的记录保存了附件的其他元数据,包括宽度、高度和缩略图信息等。

如果想手动修改附件的URL,可能需要更新wp_posts表中的guid列以及wp_postmeta表中与该附件相关的记录。在进行这些更改之前,强烈建议备份数据库,以防止意外导致数据丢失或损坏。

以下是一些可能的步骤:

备份数据库

  • 在进行任何手动修改之前,请确保备份WordPress数据库。

定位附件记录

  • wp_posts表中找到您想要修改的附件,通常可以通过post_type列(值应为attachment)和post_title列来识别附件。

修改URL

  • 更新guid列中的URL,以反映您想要的新URL。
  • wp_postmeta表中找到与该附件相关的记录(通过post_id列匹配),并更新_wp_attached_file_wp_attachment_metadata记录中的路径信息。

验证更改

  • 在WordPress后台检查附件的URL,以确保它已正确更新,并确保网站仍然正常工作。

在同一张表格里,post_contentpost_content_filtered列可能会有一些对旧URL的引用,也需要批量修改。

彻底检查

在上述之外的表格中仍然可能可以找到旧的媒体URL,需要改为新的URL。可以考虑在数据库下执行搜索,搜索内容为旧URL,匹配方式选择“至少一个词”,这样可以尽量避免遗漏。

在笔者的场合下,通过这样的搜索可以发现其他第三方插件所建的表格,以及多站点网络下其他子站的表格中,对旧URL的引用。

在〈批量更改WordPress媒体URL〉中有 1 則留言

  1. 这个问题也颇花了我一些时间解决。此誌。

Discover more from 山月

Subscribe now to keep reading and get access to the full archive.

Continue reading