在woocommerce中以编程方式添加产品

Rav*_*kar 5 php wordpress woocommerce woocommerce-rest-api

<?php
/**
* Template name: Create Product
* @package storefront
*/

 $post_id = wp_insert_post( array(
'post_title' => 'Adams Product',
'post_content' => 'Here is content of the post, so this is our great new products description',
'post_status' => 'publish',
'post_type' => "product",
) );
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', 'no' );
update_post_meta( $post_id, '_virtual', 'yes' );
update_post_meta( $post_id, '_regular_price', '' );
update_post_meta( $post_id, '_sale_price', '' );
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', '' );
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', '' );
?>
Run Code Online (Sandbox Code Playgroud)

我可以在woo-commerce中从前端创建产品,但是我需要像用户创建自己的产品时,然后根据其输入数据更改价格,并将价格以及所有输入数据保存到数据库中,假设用户是否有大约狗。在15-20公斤(用户输入)与他的尺寸(下拉)之间为“超重”,然后根据用户输入的价格进行计算。如果成功插入产品,则自动将此产品添加到他/她的购物车并重定向到购物车页面。

我附加了用于从前端模板插入产品的代码。我该如何实现?提前致谢。

Sco*_*Sco 0

// Get informations by form
$weight = $_REQUEST['weight']; // your input
$size = $_REQUEST['size']; // your dropdown
//
// Calcul your price here with $weight and $size
// ...
Run Code Online (Sandbox Code Playgroud)

根据您的计算调整您的元数据

$metas = array(
  '_visibility' => 'visible',
  '_stock_status' => 'instock',
  'total_sales' => '0',
  '_downloadable' => 'no',
  '_virtual' => 'yes',
  '_regular_price' => '',
  '_sale_price' => '',
  '_purchase_note' => '',
  '_featured' => 'no',
  '_weight' => '',
  '_length' => '',
  '_width' => '',
  '_height' => '',
  '_sku' => '',
  '_product_attributes' => array(),
  '_sale_price_dates_from' => '',
  '_sale_price_dates_to' => '',
  '_price' => '',
  '_sold_individually' => '',
  '_manage_stock' => 'no',
  '_backorders' => 'no',
  '_stock' => ''
);
foreach ($metas as $key => $value) {
  update_post_meta($post_id, $key, $value);
}

// Add product to cart 
WC()->cart->add_to_cart( $post_id );

// redirect
wp_redirect(get_permalink($post_id));
exit();
Run Code Online (Sandbox Code Playgroud)