有时候我们的WordPress站点更换域名后,媒体库中的URL链接还是老域名地址。
还有的站长不想把图片什么的媒体文件放在虚拟空间中,想放在速度比较快的图床中。
……
如何批量更改媒体库中文件的URL链接地址呢?
网上找寻答案,会发现一些更新日时为两三年前的文章,指出可以安装一些插件来解决。只是笔者验证后,发现皆在现在的版本(6.3.2
)中不可用了。
可能还是需要回归到最根本的解法——直接于数据库批量修改。网上有些反馈文章说数据库批量修改也容易有遗漏,那我们只能尽量排查干净了。
wp_options
表
在WordPress中,wp_options
表主要用于存储站点的设置选项,而不是单个附件的URL。通常,单个附件的URL存储在wp_posts
表的guid
列,而附件的路径信息存储在wp_postmeta
表中。
然而,wp_options
表中有两个选项upload_path
和upload_url_path
,可以用于控制媒体文件的默认上传路径和URL。这些选项在WordPress 3.5版本之后被隐藏,但仍然可以通过数据库直接修改它们,或使用自定义代码来访问和修改它们。
如果想改变媒体文件的默认上传路径和URL,可以尝试以下步骤:
⒈直接在数据库中修改:
- 打开
wp_options
表。 - 查找
option_name
列为upload_path
和upload_url_path
的行。 - 修改
option_value
列以反映想要的新路径和URL。
兹以upload_url_path
为例说明一下数据表相关字段与其他可能的配置方式:
- option_id (
阿拉伯数字,例如“55”
):- 这是该选项记录的唯一标识符,用于在数据库表中唯一标识此记录。
- option_name (
upload_url_path
):- 这是选项的名称,它告诉WordPress这个记录是关于什么的。在这种情况下,它是关于上传URL路径的。
- option_value (
一串URL
):- 这是选项的值。通常为空。这个字段应该包含媒体文件的基本URL,例如
http://sanguok.com/uploads
。
- 这是选项的值。通常为空。这个字段应该包含媒体文件的基本URL,例如
- autoload (
yes
):- 这个字段告诉WordPress是否应该在每个页面加载时自动加载这个选项的值。如果设置为
yes
,WordPress将在加载时自动从数据库中获取这个选项的值,这可以提高性能,因为它减少了数据库查询的次数。
- 这个字段告诉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_content
与post_content_filtered
列可能会有一些对旧URL的引用,也需要批量修改。
彻底检查
在上述之外的表格中仍然可能可以找到旧的媒体URL,需要改为新的URL。可以考虑在数据库下执行搜索,搜索内容为旧URL,匹配方式选择“至少一个词”,这样可以尽量避免遗漏。
在笔者的场合下,通过这样的搜索可以发现其他第三方插件所建的表格,以及多站点网络下其他子站的表格中,对旧URL的引用。
在〈批量更改WordPress媒体URL〉中有 3 則留言
评论区补充一下。
如果文件上传不成功/成功了但是文件URL有问题,看看
wp_options
表的48
(一般来说是这个序号)项upload_path
之配置是否出了问题。一般来说,该项留空就能够使得文件URL回归正常。
评论区补充一下。
如果文件上传不成功/成功了但是文件URL有问题,看看
wp_options
表的48
(一般来说是这个序号)项upload_path
之配置是否出了问题。一般来说,该项留空就能够使得文件URL回归正常。
这个问题也颇花了我一些时间解决。此誌。