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

CMB2插件file字段前端上传文件后更新表单丢失问题求助

解决WP Job Board Pro文件上传更新后消失的问题

1. 确保表单包含文件上传必要属性

WP Job Board Pro的文件字段提交时,必须让表单携带enctype="multipart/form-data"属性,否则服务器无法解析上传的文件。

  • 如果是自定义表单,直接在form标签中添加:
<form method="post" enctype="multipart/form-data">
    <!-- 表单内容 -->
</form>
  • 如果用插件自带表单,通过钩子强制添加属性:
add_filter('wp_job_board_pro_job_submit_form_args', function($args) {
    $args['form_attrs']['enctype'] = 'multipart/form-data';
    return $args;
});

2. 处理文件元数据的保存逻辑

插件默认在更新表单时,若未重新上传文件会清空旧文件记录,需要手动保留已上传文件:
将以下代码添加到主题functions.php或自定义插件中(替换your_field_prefix_为你的字段前缀):

add_action('wp_job_board_pro_after_save_job', function($job_id) {
    $prefix = 'your_field_prefix_';
    $field_id = $prefix . 'upload_files';

    // 获取已保存的旧文件
    $old_files = get_post_meta($job_id, $field_id, true);
    $old_files = is_array($old_files) ? $old_files : [];

    // 获取新上传的文件
    $new_files = isset($_FILES[$field_id]) ? $_FILES[$field_id] : [];

    // 合并新旧文件(有新文件则追加,无新文件则保留旧文件)
    if (!empty($new_files['name'][0])) {
        $uploaded_files = wp_job_board_pro_upload_files($field_id, $new_files);
        if (!empty($uploaded_files)) {
            update_post_meta($job_id, $field_id, array_merge($old_files, $uploaded_files));
        }
    } elseif (!empty($old_files)) {
        update_post_meta($job_id, $field_id, $old_files);
    }
}, 10, 1);

3. 修复编辑页面的文件显示

确保编辑表单时已上传的文件能正常展示,添加钩子强制读取保存的元数据:

add_filter('wp_job_board_pro_get_field_value', function($value, $field, $post_id) {
    $prefix = 'your_field_prefix_';
    if ($field['id'] === $prefix . 'upload_files') {
        $saved_files = get_post_meta($post_id, $field['id'], true);
        return is_array($saved_files) ? $saved_files : [];
    }
    return $value;
}, 10, 3);

4. 验证服务器环境配置

  • 检查wp-content/uploads目录权限是否为755/775,确保服务器有写入权限
  • 确认插件设置中的文件上传路径配置正确,未限制文件类型或大小(与你的字段配置匹配)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:46:08