2016-06-12 26 views
0

私は2つのフロントエンドフォームを使ってワードプレス投稿を追加し編集しています。私はフォームが正常に動作していることを追加し、添付ファイルを完全にアップロードすることができました。wordpress - フロントエンドから投稿添付を更新できません

問題は編集フォームにあります。私はファイルをアップロードするために以下のコードを使用しています。私はdb内で新しい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

許可が{「何のファイル情報を」エコーない;} 0755 – SML

+0

をチェックする配列があるかどうかを確認するためにあなたのスクリプトに'空の。 – krishna89

+0

は(空($ _ FILES))場合は '追加しようと示して、アップロードの許可ディレクトリ – SML

答えて

0

最後に、自分で考え出しました。私はフォームに2つのファイルアップロードフィールドを持っているので、最初のフィールドが空の2番目のフィールドにのみアップロードしようとしています。

この空のフィールドについてforeachループ内if文は(No file uploadedを意味する)upload error: 4エラーメッセージを返すと、ループを破壊されたので、私はcontinue 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; 
       } 
      } 
関連する問題