2016-07-29 2 views
0

私はカスタムポストを編集するためのカスタムフォームを持っています。このフォームは、フロントエンドユーザーが投稿とそれぞれの添付ファイルを編集するためのものです。添付ファイルの部分には、画像とビデオをアップロードできる形式の2つの入力ファイル要素があり、PHPコードの下にアップロードされた添付ファイルをキャプチャするために到着しました。カスタムポストフォームのワードプレス添付エラー

  if ($_FILES) { 

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

      if ($_FILES[$file]['error'] !== UPLOAD_ERR_OK || $_FILES[$file]['error'] === UPLOAD_ERR_NO_FILE) { 
       $ermg = "upload error : " . $_FILES[$file]['error']; 
       continue; 
      } else { 
       $attach_id = media_handle_upload($file, $post_id); 
       $type = get_post_mime_type($attach_id); 
       if ($type === 'image/jpeg' || $type === 'image/png') { 
        update_post_meta($new_post, '_thumbnail_id', $attach_id); 
       } elseif ($type === 'video/mp4' || $type === 'video/quickime') { 
        update_post_meta($new_post, '_video_id', $attach_id); 
       } 
      } 
      return $ermg; 
     } 
    } 

ここでの問題は、両方が単一の添付ファイルをアップロードすることは正常に動作すると同時に、にアップロードされている場合は、私のコードは一つだけ添付ファイルをキャプチャされていないです。

もう1つ問題があります。アップロードが行われるたびに、メディアライブラリにタイトルが作成されていない新しい未知の添付ファイルが表示されています。このスクリーンショットは以下のとおりです。誰でも助けてくれますか? enter image description here

+0

== ''へ 'から' IF($ _FILES [$ファイル] [ 'エラー'] 'の後にオペレータを変更することで! = '両方のファイルを同時にアップロードできますが、未知のファイルがまだ作成されています:( – krishna89

答えて

0

はこれを試してみてください:(function.phpに)

require_once(ABSPATH.'wp-admin/includes/admin.php'); 
if ($_FILES) 
{ 
    foreach ($_FILES as $file => $array) 
    {  
     $file_return = wp_handle_upload($file, array('test_form' => false)); 
     if(isset($file_return['error']) || isset($file_return['upload_error_handler'])) 
     { 
      $ermg = "upload error : " . $_FILES[$file]['error']; 
      continue; 
     } 
     else 
     { 
      $filename=$file_return['file']; 
      $type=$file_return['type']; 
      $attachment=array(
       'post_mime_type' => $file_return['type'], 
       'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)), 
       'post_content' => '', 
       'post_status' => 'inherit', 
       'guid' => $file_return['url'] 
      ); 
      $attachment_id=wp_insert_attachment($attachment, $file_return['url']); 
      require_once(ABSPATH . 'wp-admin/includes/image.php'); 
      $attachment_data=wp_generate_attachment_metadata($attachment_id, $filename); 
      wp_update_attachment_metadata($attachment_id,$attachment_data); 
      if ($type === 'image/jpeg' || $type === 'image/png') { 
       update_post_meta($new_post, '_thumbnail_id', $attachment_id); 
      } elseif ($type === 'video/mp4' || $type === 'video/quickime') { 
       update_post_meta($new_post, '_video_id', $attachment_id); 
      } 
     } 
     return $ermg; 
    } 
} 
+0

あなたのコードを試しましたが、それが動作していない、未知の添付ファイルが作成されています。 – krishna89

関連する問題