商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 如何自动生成 WordPress 上传目录中所有图片的路径清单文件

如何自动生成 WordPress 上传目录中所有图片的路径清单文件

  发布于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 上传目录中所有图片的路径清单文件

在电商类WordPress网站里,比如WooCommerce,给几百上千个商品批量上传图片并关联路径,是件常见但特别繁琐的事。手动整理wp-content/uploads下的图片路径,不仅耗时易错,而且FTP或主机后台直接浏览,很难导出结构化数据。这篇文章要介绍的就是一个零依赖、免写代码、开箱即用的专业级解决方案——通过定制化WordPress插件,全自动创建标准化文件清单。

✅ 核心优势:原生、安全、智能更新

这个方案完全基于WordPress官方函数list_files()(位于wp-admin/includes/file.php),兼容性和安全性都有保障。它只在WordPress后台初始化时触发(admin_init钩子),不暴露于前台、不开放远程访问、不需要用户名密码登录,彻底绕开了Python模拟登录失败、权限不足、CSRF阻断这些常见坑。

更值得说的是,插件自带智能缓存机制:只有当上传目录内容有变化(比如新增或删除了图片),或者插件文件本身被修改时,才会重新生成清单文件;否则直接跳过,避免无谓的I/O开销和覆盖风险。

? 快速部署三步走

  1. 复制并配置代码
    把下面这个精简版插件代码保存为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); // 设为可读写(非私有)
});
  1. 安装插件

    • 进入WordPress后台 →「插件」→「安装插件」→「上传插件」→ 选择刚保存的file-list-creator.php
    • 点击「安装现在」→「启用插件」

    ? 提示:启用后无需任何操作,插件将在下次进入后台时自动运行并生成文件。

  2. 获取清单文件

    • 文件默认保存在wp-content/uploads/image-paths.txt(或.csv)
    • 通过FTP、主机文件管理器或WordPress插件(如WP File Manager)下载该文件
    • 在Excel中:「数据」→「从文本/CSV」导入 → 选择对应分隔符(TXT用制表符\t,CSV用分号;)→ 完成!

⚠️ 关键注意事项

  • 路径深度适配:如果你的站点启用了「按年月组织上传文件」(WordPress默认),请保持list_files()的levels参数≥3;如果已关闭此功能,可以设为1以提升性能。
  • 安全建议:生成的文件默认权限为0644(公开可读)。如果需要禁止直接浏览器访问(比如防止爬虫抓取),把代码中chmod($output_file, 0644)改为chmod($output_file, 0600)即可。
  • 扩展性说明:这个方案支持CSV格式(带表头)、多列输出(路径+URL)、自定义分隔符,完美适配Excel VBA批量处理需求。
  • 故障排查:如果没生成文件,先检查PHP错误日志;确认wp-content/uploads目录可写;临时禁用其他插件排除冲突。

? 总结

与其折腾不可靠的Python登录模拟,或者手动遍历服务器目录,不如采用WordPress原生、钩子驱动、权限可控的自动化方案。这个插件体积小(<2KB)、没有外部依赖、一次配置长期生效,真正实现“上传新图 → 后台刷新 → 清单就绪”的高效工作流。对于熟悉Excel/VBA的朋友,从此可以把image-paths.txt直接作为产品图链数据源,大幅提升上架效率。

本文转载于:https://www.php.cn/faq/2340605.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注