发布于2026-07-18 阅读(0)
扫一扫,手机访问
做电商WordPress站的朋友都知道,给几百个商品配图,光整理图片路径就能让人崩溃。手动在FTP里翻找,再一条条复制粘贴?太慢还容易出错。用Python脚本吧,又得处理模拟登录、权限、CSRF这些坑。其实,最好的办法就是利用WordPress自己提供的函数,写一个极简插件,自动把图片路径清单生成出来。这个方案无需编程基础,安全可靠——通过轻量插件自动扫描 wp-content/uploads 目录,生成含完整文件路径(或URL)的TXT/CSV文本文件,便于Excel批量导入商品图链。全程基于WordPress内置函数,不依赖外部脚本或登录模拟。
没错,就是本文要介绍的这套方案:无需编程基础、安全可靠的WordPress原生方案——通过轻量插件自动扫描 wp-content/uploads 目录,生成含完整文件路径(或URL)的TXT/CSV文本文件,便于Excel批量导入商品图链。全程基于WordPress内置函数,不依赖外部脚本或登录模拟。

在电商类WordPress网站里,比如WooCommerce,给几百上千个商品批量上传图片并关联路径,是件常见但特别繁琐的事。手动整理wp-content/uploads下的图片路径,不仅耗时易错,而且FTP或主机后台直接浏览,很难导出结构化数据。这篇文章要介绍的就是一个零依赖、免写代码、开箱即用的专业级解决方案——通过定制化WordPress插件,全自动创建标准化文件清单。
这个方案完全基于WordPress官方函数list_files()(位于wp-admin/includes/file.php),兼容性和安全性都有保障。它只在WordPress后台初始化时触发(admin_init钩子),不暴露于前台、不开放远程访问、不需要用户名密码登录,彻底绕开了Python模拟登录失败、权限不足、CSRF阻断这些常见坑。
更值得说的是,插件自带智能缓存机制:只有当上传目录内容有变化(比如新增或删除了图片),或者插件文件本身被修改时,才会重新生成清单文件;否则直接跳过,避免无谓的I/O开销和覆盖风险。
file-list-creator.php(注意:UTF-8无BOM编码): wp_get_upload_dir()['basedir'], // 默认扫描 uploads 根目录
'file_name' => 'image-paths', // 输出文件名(不含扩展名)
'extensions' => ['jpg','jpeg','png','gif','webp','a vif','svg'], // 仅包含这些格式
'file_type' => 'txt', // 可选 'txt' 或 'csv'
'list_type' => 'paths', // 可选 'paths' / 'urls' / 'both'
'location' => 'uploads', // 保存位置:'uploads' 或 'root'(网站根目录)
'separator' => "\t", // TXT 文件分隔符(制表符更易粘贴到 Excel)
];
// ✅ 无需修改下方逻辑 —— 自动执行
add_action('admin_init', function() use ($settings) {
if (!is_admin() || wp_doing_ajax() || !current_user_can('manage_options')) return;
$target_dir = $settings['folder'];
if (!is_dir($target_dir)) return;
$output_file = ($settings['location'] === 'root' ? ABSPATH : wp_get_upload_dir()['basedir'] . '/')
. $settings['file_name'] . '.' . $settings['file_type'];
// 智能判断是否需要更新:仅当 uploads 目录或插件文件更新后才重写
$needs_update = !file_exists($output_file)
|| filemtime($target_dir) > filemtime($output_file)
|| filemtime(__FILE__) > filemtime($output_file);
if (!$needs_update) return;
$files = list_files($target_dir, 3, []); // 深度3:兼容年/月子目录结构
if (empty($files) || !is_array($files)) return;
$filtered = array_filter($files, function($f) use ($settings) {
return is_file($f) && in_array(strtolower(pathinfo($f, PATHINFO_EXTENSION)), $settings['extensions']);
});
if (empty($filtered)) return;
if ($settings['file_type'] === 'csv') {
$fp = fopen($output_file, 'w');
fputcsv($fp, [$settings['list_type'] === 'both' ? 'PATH' : 'PATH']); // 简化列头
foreach ($filtered as $f) {
$row = $settings['list_type'] === 'both'
? [$f, str_replace(ABSPATH, site_url() . '/', $f)]
: [$f];
fputcsv($fp, $row, ';');
}
fclose($fp);
} else {
$content = implode("\n", array_map(function($f) use ($settings) {
return $settings['list_type'] === 'both'
? $f . $settings['separator'] . str_replace(ABSPATH, site_url() . '/', $f)
: $f;
}, $filtered));
file_put_contents($output_file, $content . "\n", LOCK_EX);
}
chmod($output_file, 0644); // 设为可读写(非私有)
});
安装插件
file-list-creator.php? 提示:启用后无需任何操作,插件将在下次进入后台时自动运行并生成文件。
获取清单文件
wp-content/uploads/image-paths.txt(或.csv)list_files()的levels参数≥3;如果已关闭此功能,可以设为1以提升性能。chmod($output_file, 0644)改为chmod($output_file, 0600)即可。wp-content/uploads目录可写;临时禁用其他插件排除冲突。与其折腾不可靠的Python登录模拟,或者手动遍历服务器目录,不如采用WordPress原生、钩子驱动、权限可控的自动化方案。这个插件体积小(<2KB)、没有外部依赖、一次配置长期生效,真正实现“上传新图 → 后台刷新 → 清单就绪”的高效工作流。对于熟悉Excel/VBA的朋友,从此可以把image-paths.txt直接作为产品图链数据源,大幅提升上架效率。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8