วิธีเพิ่มผลิตภัณฑ์ใน woocommerce ด้วยรหัส PHP [ปิด]


29

ฉันต้องการเพิ่มผลิตภัณฑ์ด้วยโค้ด PHP ดังนี้

$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);

แต่โค้ดนี้ปรับให้เหมาะสมสำหรับ WooCommerce เช่นประเภทการโพสต์และ guid และ metadata และ ... ใครสามารถช่วยได้บ้าง


1
การเพิ่มผลิตภัณฑ์ผ่าน PHP จะค่อนข้างใช้งานได้มากเนื่องจากมีสิ่งต่าง ๆ มากมายให้แทรก / อัปเดต บางทีคำตอบนี้และปลั๊กอินที่เกี่ยวข้องจะช่วยให้คุณได้งานทำง่ายขึ้น :)
Sven

1
ในปี 2017 ใช้ REST API เป็นข้อเสนอแนะในstackoverflow.com/a/40133117/5749914
ชิมแปนซี (Warlike Chimpanzee)

คำตอบ:


49

เป็นเรื่องง่ายที่คุณได้ทำการเพิ่มข้อมูลลงใน meta post ปัญหาที่ฉันมีคือการเพิ่มผลิตภัณฑ์ที่สามารถดาวน์โหลดได้ไปยังร้านค้า

ด้านล่างคือรหัสที่ฉันใช้ซึ่งจะแสดงรายการเมตาโพสต์ทั้งหมดที่ใช้โดย woo commerce สิ่งนี้เผยแพร่ผลิตภัณฑ์ แต่ลิงค์ดาวน์โหลดจะไม่แนบ

แต่เดิมเมื่อฉันเริ่มฉันทำข้อผิดพลาดกับอาร์เรย์ที่เก็บลิงค์ดาวน์โหลดที่ผลิตลิงค์ไม่ดี "b" ตามด้วยไฟล์ดาวน์โหลดที่สองที่ถูกต้อง หลังจากแก้ไขอาเรย์เพื่อให้ตรงกับผลิตภัณฑ์ที่เพิ่มเข้ามาด้วยตนเองแล้วมันจะไม่แสดงผลไฟล์ หากใครมีข้อมูลเกี่ยวกับเรื่องนี้มันจะได้รับการชื่นชมอย่างมาก

$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', '');

หวังว่าสิ่งนี้สอดคล้องกับมาตรฐานคุณภาพ :)


แก้ไขหลังจากการค้นหาเป็นเวลาหลายสัปดาห์ปรากฎว่าฉันมีช่องว่างหลัง "_downloadable_files" ดังนั้นจึงไม่ได้รับการยอมรับจาก woo commerce นอกจากนี้ฉันได้อ่านว่าไฟล์ของฉันถูกเก็บไว้ในโฟลเดอร์ woo commerce อัปโหลด
user3361421

เมื่อใช้ update_post_meta ทั้งหมดฉันไม่พบวิธีตั้งค่าคำอธิบายสั้น ๆ ของผลิตภัณฑ์ที่เพิ่มเข้ามา ... ฉันจะตั้งคำอธิบายสั้น ๆ ของผลิตภัณฑ์ด้วยรหัส php ได้อย่างไร
รีไลต์

2
ฉันได้ทำงานกับสิ่งที่คล้ายกับสิ่งนี้ แต่พบว่าหลังจากใช้ wp_insert_post โพสต์จะถูกสร้างและป้อนข้อมูล แต่โพสต์ไม่ปรากฏในหน้าร้านค้าวูและหมวดหมู่ไม่ปรากฏในแถบด้านข้าง แปลกมากที่โพสต์และข้อมูลทั้งหมดมีอยู่ในการสำรองข้อมูล
EHerman

@prelite post_excerpt ไม่ใช่คำอธิบายสั้น ๆ ใช่ไหม
Daniel

ทำงานได้ตามที่คาดไว้
Alaksandar Jesus Gene
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.