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

推荐订阅源

WordPress大学
WordPress大学
G
Google Developers Blog
M
MIT News - Artificial intelligence
Vercel News
Vercel News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
B
Blog RSS Feed
Blog — PlanetScale
Blog — PlanetScale
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
Stack Overflow Blog
Stack Overflow Blog
雷峰网
雷峰网
The Cloudflare Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Fortinet All Blogs
L
LangChain Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
B
Blog
J
Java Code Geeks
Hugging Face - Blog
Hugging Face - Blog
I
InfoQ
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

山月

在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的引用。