1. 项目背景与需求解析
在WordPress内容创作过程中,图片管理一直是个让人头疼的问题。每次从剪贴板粘贴图片时,系统默认会将图片存储在/wp-content/uploads/按日期分类的目录中。这种存储方式虽然自动完成了文件归类,但在以下场景中会带来诸多不便:
- 当我们需要在多个站点间迁移内容时,图片路径往往成为绊脚石
- 批量替换特定来源的图片时,分散的存储位置增加了操作复杂度
- 需要对图片进行CDN加速时,路径规则不统一会导致配置困难
我在管理一个日均更新50+文章的科技媒体站点时,就深受其害。编辑们习惯直接从网页复制图片粘贴到编辑器,结果两年下来uploads目录积累了近20万张图片,当我们需要更换图床服务商时,光是整理这些图片的路径就耗费了三周时间。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术方案设计
2.1 核心解决思路
通过改造WordPress的上传机制,实现以下目标:
- 按图片来源域名自动创建分类目录
- 保留原始文件名避免哈希值混淆
- 支持自定义路径规则模板
- 兼容现有媒体库功能
2.2 关键技术选型
经过对比测试,最终确定的技术实现方案:
php复制// 钩子函数优先级设置
add_filter('wp_handle_upload_prefilter', 'custom_upload_filter', 10, 1);
add_filter('wp_handle_upload', 'custom_upload_filter_after', 10, 2);
// 路径规则配置
define('CUSTOM_UPLOAD_DIR', '/external-images');
define('SOURCE_DOMAIN_REGEX', '/https?:\/\/([^\/]+)/i');
选择这两个钩子的原因是:
wp_handle_upload_prefilter可以在文件移动前修改目标路径wp_handle_upload用于处理上传后的元数据更新- 优先级设为10确保与其他插件兼容
3. 核心实现细节
3.1 路径解析算法
对于粘贴的图片URL,我们采用以下处理流程:
- 提取源域名:从URL中解析出二级域名(如tech.website.com)
