2016-06-12 45 views
0

我有兩個前端表單來添加和編輯wordpress帖子。我添加表單工作正常,並能夠完美地上傳附件。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。

+0

檢查您上傳的許可目錄 – SML

+0

許可顯示0755 – krishna89

+0

嘗試添加'如果(空($ _ FILES)){回聲「無文件信息」;}'你的腳本來檢查,如果數組空。 – SML

回答

0

終於明白了我自己。由於我有兩個文件上傳字段,我只嘗試在第一個字段爲空的第二個字段中上傳。

對於這個空場裏foreach循環的if語句返回錯誤信息upload error: 4(這意味着No file uploaded),並打破循環,使我增加了一個continue答在我的代碼更改下面的部分。

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; 
       } 
      }