You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress删除文章时移动文件:目标存在则追加序号重命名

WordPress删除文章时移动文件并自动重命名同名文件

以下是实现你需求的修改后完整代码,解决了同名文件的自动重命名问题:

add_action('before_delete_post', function ($id) {
    $rs_image_path = "/var/www/html/wp-content/uploads/hexon/";
    $rs_image_dest_path = "/var/www/html/wp-content/uploads/wpallimport/files/images/";
    
    $rs_image_filenames = get_field('afbeeldingen_bestandsnamen', $id);
    $rs_image_klantnummer = get_field('hexon_klantnummer', $id);

    // 空字段直接返回,避免无效操作
    if (empty($rs_image_filenames) || empty($rs_image_klantnummer)) {
        return;
    }

    $variableAry = explode(", ", $rs_image_filenames);
    foreach ($variableAry as $rs_image_url) {
        $source_file = $rs_image_path . $rs_image_klantnummer . "/" . $rs_image_url;
        
        // 源文件不存在或不可读时跳过
        if (!file_exists($source_file) || !is_readable($source_file)) {
            continue;
        }

        $dest_dir = $rs_image_dest_path . $rs_image_klantnummer . "/";
        // 确保目标文件夹存在,不存在则递归创建
        if (!file_exists($dest_dir)) {
            mkdir($dest_dir, 0755, true);
        }

        // 拆分文件名与扩展名,方便后续重命名
        $file_info = pathinfo($rs_image_url);
        $filename = $file_info['filename'];
        $extension = isset($file_info['extension']) ? '.' . $file_info['extension'] : '';

        $dest_file = $dest_dir . $rs_image_url;
        $counter = 1;

        // 循环检查目标文件是否存在,生成带序号的新文件名
        while (file_exists($dest_file)) {
            $dest_file = $dest_dir . $filename . "-" . $counter . $extension;
            $counter++;
        }

        // 执行文件移动
        rename($source_file, $dest_file);
    }
});

关键修改点说明:

  • 目标文件夹保障:新增目标文件夹创建逻辑,避免因文件夹不存在导致移动失败
  • 同名文件处理:通过循环检测目标路径,若文件已存在则自动追加递增序号,直到找到可用的文件名
  • 健壮性优化:增加空字段判断、源文件有效性检查,跳过无效操作
  • 文件名拆分:使用pathinfo分离文件名与扩展名,保证重命名时扩展名不会丢失

内容的提问来源于stack exchange,提问作者user2958073

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:25:32