$conf, $runtime; function_exists('chdir') AND chdir(APP_PATH); $r = 'mysql' == $conf['cache']['type'] ? website_set('runtime', $runtime) : cache_set('runtime', $runtime); } function runtime_truncate() { global $conf; 'mysql' == $conf['cache']['type'] ? website_set('runtime', '') : cache_delete('runtime'); } register_shutdown_function('runtime_save'); ?>woocommerce offtopic - How to upload multiple image using wp_insert_post|Programmer puzzle solving
最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

woocommerce offtopic - How to upload multiple image using wp_insert_post

matteradmin10PV0评论

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 ?

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 ?

Share Improve this question asked Nov 28, 2018 at 5:41 Tejas GajjarTejas Gajjar 584 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 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));

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' );
Post a comment

comment list (0)

  1. No comments so far