惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
V
V2EX
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
小众软件
小众软件
Vercel News
Vercel News
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
J
Java Code Geeks
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog
B
Blog
美团技术团队
量子位

山月

在VS Code配置Obsidian風格Markdown編輯環境 – 山月 在Windows通过LM Studio使用Zotero MCP – 山月 禁用WordPress中Jetpack的AI助手按钮 – 山月 WordPress/MCP Adapter安装与维护指南 – 山月 WordPress服务器权限与所有权配置详解 – 山月 在Windows上為GnuCash啟用線上報價 (Finance::Quote) – 山月 Gitea Docker /var/empty 权限问题除错总结 – 山月 Bookwyrm由0.7.5升级至Production(e217a17)完整过程及疑难解答 – 山月 用正则表达式修改ruby标签 – 山月 为WordPress Syndication Links插件添加新的站点与图标的实现方法 – 山月 进入不断重启的Docker容器的命令行之方法 – 山月 自建Bookwyrm无法查询远端用户?——开启数据库扩展 – 山月 BookWyrm无法增添书本、作者、阅读进度……?——解决数据库自增序列问题 – 山月 俾Docker容器中的应用访问宿主机上的数据库服务 – 山月 QNAP NAS使用者注意!千万莫对MariaDB做这件事…… – 山月 解决Wikibase手动导入数据后无法新建实体之问题 – 山月 辰年再訪神保町 – 山月 PHP-FPM站点池配置调优以解决WordPress过度占用系统资源之问题 – 山月 如果Linux软件包常规升级失败——以python3-update-manager为例 – 山月 解决站点526报错:SSL证书配置错误 – 山月 風挾着陽光來 – 山月 和A.N.R.GHG插件说bye-bye – 山月 WordPress页面链接末尾出现“?swcfpc=1”后缀,是怎么回事? – 山月 安装、维护Monica PRM的一些笔记 – 山月 清理服务器空间的着手点 – 山月 关于Joplin Server文件上传大小上限 – 山月 如何优化PHP文件上传大小:完整指南 – 山月 WordPress站点部分地出现“严重错误”的一些可能的解法 – 山月 自托管WordPress编辑文章出现问题的排查法 – 山月 於Docker安裝sudo之方法 – 山月
批量更改WordPress媒体URL – 山月
2023-10-20 · via 山月

有时候我们的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的引用。