wordpress - 无法从前端更新帖子附件

时间:2016-06-12 13:22:47

标签: php wordpress file-upload

我有两个前端表单来添加和编辑wordpress帖子。我添加表单工作正常,并能够完美上传附件。

问题在于编辑表单。我使用下面的代码上传文件,我能够在数据库中看到新的attachment帖子类型记录出现在表单提交中,但实际文件没有上传和post_meta也没有得到更新

  if (!function_exists('wp_generate_attachment_metadata')) {
                require_once(ABSPATH . "wp-admin" . '/includes/image.php');
                require_once(ABSPATH . "wp-admin" . '/includes/file.php');
                require_once(ABSPATH . "wp-admin" . '/includes/media.php');
            }
            if ($_FILES) {
                foreach ($_FILES as $file => $array) {
                    if ($_FILES[$file]['error'] !== UPLOAD_ERR_OK) {
                        return "upload error : " . $_FILES[$file]['error'];
                    }
                    $attach_id = media_handle_upload($file, $post_id);
                }
            }
            if ($attach_id > 0) {

                $type = get_post_mime_type($attach_id);
                if ($type = 'image/jpeg') {
                    update_post_meta($new_post, '_thumbnail_id', $attach_id);
                } elseif ($type = 'video/mp4') {
                    update_post_meta($new_post, '_video_id', $attach_id);
                }
                //and if you want to set that image as Post  then use:
            }

$post_id是附件的父帖子ID。

1 个答案:

答案 0 :(得分:0)

终于把它弄清楚了。由于我在表单中有两个文件上传字段,我一直尝试仅在第一个字段为空的第二个字段中上传。

对于这个空字段,foreach循环中的upload error: 4语句返回错误消息continue(这意味着No file uploaded)并打破循环,因此我添加了{ {1}} ans在我的代码中更改了以下部分。

if ($_FILES) {

                foreach ($_FILES as $file => $array) {

                    if ($_FILES[$file]['error'] !== UPLOAD_ERR_OK) {
                        $ermg = "upload error : " . $_FILES[$file]['error'];
                        continue;
                    }else{
                    $attach_id = media_handle_upload($file, $post_id);
                }
                return $ermg;
                }
            }