Bagaimana cara menambahkan produk di woocommerce dengan kode php [ditutup]

29

Saya ingin menambahkan produk dengan kode PHP seperti di bawah ini:

$post_information = array(
  'post_title' => 'new item shop',
  'post_content' => 'this is new item shop',
  'post_type' => 'post',
  'post_status' => 'publish'
);
$post_id = wp_insert_post($post_information);

tetapi kode ini mengoptimalkan untuk WooCommerce seperti jenis posting dan panduan dan metadata dan ... Dapatkah seseorang membantu?

Hossein Hashemi
sumber
1
Menambahkan produk melalui PHP akan cukup banyak pekerjaan karena ada banyak hal yang berbeda untuk dimasukkan / diperbarui. Mungkin jawaban ini dan plugin yang terkait akan membantu Anda menyelesaikan pekerjaan dengan lebih mudah :)
Sven
1
Pada 2017, gunakan REST API seperti yang disarankan di stackoverflow.com/a/40133117/5749914 .
Simpanse Warlike

Jawaban:

49

Cukup mudah, Anda telah mengerjakan data yang ditambahkan dalam pos meta. Masalah yang saya alami adalah menambahkan produk yang dapat diunduh ke toko.

di bawah ini adalah kode yang saya gunakan mencantumkan semua meta pos yang digunakan oleh woo commerce. Ini menerbitkan produk namun tautan unduhan tidak akan dilampirkan.

Awalnya ketika saya mulai saya membuat kesalahan dengan array yang menyimpan tautan unduhan menghasilkan tautan yang buruk "b" diikuti oleh file unduhan kedua yang benar. Setelah memperbaiki array agar sesuai dengan produk yang ditambahkan secara manual, tidak ada yang akan menampilkan file. Jika ada yang punya info tentang ini, itu akan sangat dihargai

$post = array(
    'post_author' => $user_id,
    'post_content' => '',
    'post_status' => "publish",
    'post_title' => $product->part_num,
    'post_parent' => '',
    'post_type' => "product",
);

//Create post
$post_id = wp_insert_post( $post, $wp_error );
if($post_id){
    $attach_id = get_post_meta($product->parent_id, "_thumbnail_id", true);
    add_post_meta($post_id, '_thumbnail_id', $attach_id);
}

wp_set_object_terms( $post_id, 'Races', 'product_cat' );
wp_set_object_terms($post_id, 'simple', 'product_type');

update_post_meta( $post_id, '_visibility', 'visible' );
update_post_meta( $post_id, '_stock_status', 'instock');
update_post_meta( $post_id, 'total_sales', '0');
update_post_meta( $post_id, '_downloadable', 'yes');
update_post_meta( $post_id, '_virtual', 'yes');
update_post_meta( $post_id, '_regular_price', "1" );
update_post_meta( $post_id, '_sale_price', "1" );
update_post_meta( $post_id, '_purchase_note', "" );
update_post_meta( $post_id, '_featured', "no" );
update_post_meta( $post_id, '_weight', "" );
update_post_meta( $post_id, '_length', "" );
update_post_meta( $post_id, '_width', "" );
update_post_meta( $post_id, '_height', "" );
update_post_meta($post_id, '_sku', "");
update_post_meta( $post_id, '_product_attributes', array());
update_post_meta( $post_id, '_sale_price_dates_from', "" );
update_post_meta( $post_id, '_sale_price_dates_to', "" );
update_post_meta( $post_id, '_price', "1" );
update_post_meta( $post_id, '_sold_individually', "" );
update_post_meta( $post_id, '_manage_stock', "no" );
update_post_meta( $post_id, '_backorders', "no" );
update_post_meta( $post_id, '_stock', "" );

// file paths will be stored in an array keyed off md5(file path)
$downdloadArray =array('name'=>"Test", 'file' => $uploadDIR['baseurl']."/video/".$video);

$file_path =md5($uploadDIR['baseurl']."/video/".$video);


$_file_paths[  $file_path  ] = $downdloadArray;
// grant permission to any newly added files on any existing orders for this product
// do_action( 'woocommerce_process_product_file_download_paths', $post_id, 0, $downdloadArray );
update_post_meta( $post_id, '_downloadable_files', $_file_paths);
update_post_meta( $post_id, '_download_limit', '');
update_post_meta( $post_id, '_download_expiry', '');
update_post_meta( $post_id, '_download_type', '');
update_post_meta( $post_id, '_product_image_gallery', '');

Semoga ini sesuai dengan standar kualitas :)

pengguna3361421
sumber
Edit setelah pencarian minggu ternyata saya memiliki ruang setelah "_downloadable_files" sehingga tidak dikenali oleh woo commerce. Saya juga telah membaca bahwa file saya disimpan di bawah folder unggahan perdagangan woo.
user3361421
Dengan semua update_post_meta itu, saya tidak menemukan cara untuk mengatur deskripsi singkat dari produk yang ditambahkan ... Bagaimana saya bisa mengatur deskripsi singkat suatu produk dengan kode php?
prelite
2
Saya telah mengerjakan sesuatu yang mirip dengan ini, tetapi menemukan bahwa setelah menggunakan wp_insert_post posting dibuat dan data dimasukkan, tetapi posting tidak muncul di halaman toko woo, dan kategorinya tidak muncul di sidebar. Sangat aneh karena pos dan semua datanya ada di yang didukung.
EHerman
@prelite bukankah post_excerpt adalah deskripsi singkat?
Daniel
Bekerja persis seperti yang diharapkan
Alaksandar Jesus Gene