2014-06-02 7 views
2

Я пытаюсь разрешить пользователям создавать событие (настраиваемый тип сообщения) на передней части веб-сайта. Все обновляется, но я хочу, чтобы они загружали изображения и прикрепляли их к полю галереи ACF для этого события.Загрузка нескольких файлов на несколько языков WordPress

Так ЭОР у меня есть это:

<input type="file" name="upload_attachment[]" class="files" size="50" multiple="multiple" /> 

и:

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) { 

    $files = $_FILES['upload_attachment']; 
    foreach ($files['name'] as $key => $value) { 

     if ($files['name'][$key]) { 
      $file = array(
      'name'  => $files['name'][$key], 
      'type'  => $files['type'][$key], 
      'tmp_name' => $files['tmp_name'][$key], 
      'error' => $files['error'][$key], 
      'size'  => $files['size'][$key] 
     ); 

     $attachment_id = media_handle_upload($key, $post_id); 

     if (is_wp_error($attachment_id)) { 
      echo('error <br/>'); 
     } else { 
      echo('success!<br />'); 
     } 

     var_dump($attachment_id); 

    } 
} 

Но это, кажется, не работает. В основном я хочу, чтобы изображение было загружено в медиа-библиотеку, а затем вставить изображение в поле галереи ACF.

Но я думаю, что первый шаг - это попасть в медиа-библиотеку.

ответ

4

Хорошо, мне удалось разобраться в этом, если кто-то еще должен сделать что-то подобное.

На переднем конце:

<input type="file" name="upload_attachment[]" class="files" size="50" multiple="multiple" /> 
<?php wp_nonce_field('upload_attachment', 'my_image_upload_nonce'); ?> 

И в файле PHP я отправляю формы, у меня есть это:

if ($_FILES) { 

     require_once(ABSPATH . 'wp-admin/includes/image.php'); 
     require_once(ABSPATH . 'wp-admin/includes/file.php'); 
     require_once(ABSPATH . 'wp-admin/includes/media.php'); 


     $files = $_FILES['upload_attachment']; 
     $count = 0; 
     $galleryImages = array(); 


     foreach ($files['name'] as $count => $value) { 

      if ($files['name'][$count]) { 

       $file = array(
        'name'  => $files['name'][$count], 
        'type'  => $files['type'][$count], 
        'tmp_name' => $files['tmp_name'][$count], 
        'error' => $files['error'][$count], 
        'size'  => $files['size'][$count] 
       ); 

       $upload_overrides = array('test_form' => false); 
       $upload = wp_handle_upload($file, $upload_overrides); 


       // $filename should be the path to a file in the upload directory. 
       $filename = $upload['file']; 

       // The ID of the post this attachment is for. 
       $parent_post_id = $post_id; 

       // Check the type of tile. We'll use this as the 'post_mime_type'. 
       $filetype = wp_check_filetype(basename($filename), null); 

       // Get the path to the upload directory. 
       $wp_upload_dir = wp_upload_dir(); 

       // Prepare an array of post data for the attachment. 
       $attachment = array(
        'guid'   => $wp_upload_dir['url'] . '/' . basename($filename), 
        'post_mime_type' => $filetype['type'], 
        'post_title'  => preg_replace('/\.[^.]+$/', '', basename($filename)), 
        'post_content' => '', 
        'post_status' => 'inherit' 
       ); 

       // Insert the attachment. 
       $attach_id = wp_insert_attachment($attachment, $filename, $parent_post_id); 

       // Make sure that this file is included, as wp_generate_attachment_metadata() depends on it. 
       require_once(ABSPATH . 'wp-admin/includes/image.php'); 

       // Generate the metadata for the attachment, and update the database record. 
       $attach_data = wp_generate_attachment_metadata($attach_id, $filename); 
       wp_update_attachment_metadata($attach_id, $attach_data); 

       array_push($galleryImages, $attach_id); 

      } 

      $count++; 

      // add images to the gallery field 
      update_field('field_535e6a644107b', $galleryImages, $post_id); 

     } 



    } 

Этот скрипт теперь позволяет несколько файлов, которые будут загружены на сервер , прикрепленный к сообщению, создаваемому и добавленному в поле галереи ACF.

+0

Я пытаюсь сделать то же самое с полем загрузки 8 differnet. не могли бы вы мне помочь? вот моя тема stackoverflow: http://stackoverflow.com/questions/27066613/upload-images-on-front-by-user – mmdwc

+0

Я не могу заставить это работать. Изображения загружаются и прикрепляются к правильному сообщению, но они не будут отображаться в галерее сообщений – Tsea

Смежные вопросы