1

Im using wp_insert_post to add products on the front end of a woocommerces site

My current code will upload all the images but only the last image will be in the product gallery images

heres my code;

functions.php

function my_handle_attachment( $file_handler, $post_id, $set_thu=false) {
  // check to make sure its a successful upload

  if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) __return_false();

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

  $attach_id = media_handle_upload( $file_handler, $post_id );


  if ( is_numeric( $attach_id ) ) {

    update_post_meta( $post_id, '_product_image_gallery', $attach_id );

  }
  return $attach_id;  
}

frontend

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]
            );
            $_FILES = array("upload_attachment" => $file);
            foreach ($_FILES as $file => $array) {
                $newupload = my_handle_attachment($file,$post_id);
                 update_post_meta($post_id,  array_push($post_id, '_product_image_gallery',$newupload));
            }
        }
    }
}


<input type="file" name="upload_attachment[]" multiple="multiple"  />

Is anything wrong in this code ?

1

Hello Tejas you may please alter your code below and let me know if it worked for you .

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

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

$_FILES = array ("files" => $file); 
foreach ($_FILES as $file => $array) { 
$newupload = my_handle_attachment($file,$post_id); 

}
array_push($gallery,$newupload);

} 
update_post_meta($post_id,'_product_image_gallery', implode(',',$gallery));
0

you can clean out the title attributes yourself by adding the following to your functions.php file:

function remove_title_attributes($input) {
return preg_replace('/\s*title\s*=\s*(["\']).*?\1/', '', $input);
 }
 add_filter( 'wp_list_pages', 'remove_title_attributes' );

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.