如何解决LF一个PHP函数,用于根据产品名称在WooCommerce中创建新产品或现有产品的变体
在开始之前,请注意,我是一名初级开发人员,从技术上讲,这是我的第一个重要任务。
上下文:母公司提供了超过15,000种产品。子公司从自己的网站中选择15k的固定金额进行销售。各种产品具有相同的产品名称,但大小,颜色等不同。
我正在尝试执行的功能会检查所选产品是否存在重复的产品名称,如果找不到则仅导入或创建这些名称。如果确实找到重复的产品名称,则会在创建新产品的同时创建该产品的变体。
简而言之:寻找PHP函数以创建父产品或父产品+找到相同名称的产品时的变体。
下面是我到目前为止获得的代码,我知道fnmatch可能无法正常工作。 (这是一个API.php文件的片段)
谢谢!
$product = wc_get_product( $product_id );
if($product_name->fnmatch("productname" $string)){
function create_product_variation( $product_id,$variation_data ){
// Get the Variable product object (parent)
$product = wc_get_product($product_id);
$variation_post = array(
'post_title' => $product->get_name(),'post_name' => 'product-'.$product_id.'-variation','post_status' => 'publish','post_parent' => $product_id,'post_type' => 'product_variation','guid' => $product->get_permalink()
);
// Creating the product variation
$variation_id = wp_insert_post( $variation_post );
// Get an instance of the WC_Product_Variation object
$variation = new WC_Product_Variation( $variation_id );
// Iterating through the variations attributes
foreach ($variation_data['attributes'] as $attribute => $term_name )
{
$taxonomy = 'pa_'.$attribute; // The attribute taxonomy
// If taxonomy doesn't exists we create it
if( ! taxonomy_exists( $taxonomy ) ){
register_taxonomy(
$taxonomy,'product_variation',array(
'hierarchical' => false,'label' => ucfirst( $attribute ),'query_var' => true,'rewrite' => array( 'slug' => sanitize_title($attribute) ),// The base slug
),);
}
// Check if the Term name exist and if not we create it.
if( ! term_exists( $term_name,$taxonomy ) )
wp_insert_term( $term_name,$taxonomy ); // Create the term
$term_slug = get_term_by('name',$term_name,$taxonomy )->slug; // Get the term slug
// Get the post Terms names from the parent variable product.
$post_term_names = wp_get_post_terms( $product_id,$taxonomy,array('fields' => 'names') );
// Check if the post term exist and if not we set it in the parent variable product.
if( ! in_array( $term_name,$post_term_names ) )
wp_set_post_terms( $product_id,true );
// Set/save the attribute data in the product variation
update_post_meta( $variation_id,'attribute_'.$taxonomy,$term_slug );
}
## Set/save all other data
// SKU
if( ! empty( $variation_data['sku'] ) )
$variation->set_sku( $variation_data['sku'] );
// Prices
if( empty( $variation_data['sale_price'] ) ){
$variation->set_price( $variation_data['regular_price'] );
} else {
$variation->set_price( $variation_data['sale_price'] );
$variation->set_sale_price( $variation_data['sale_price'] );
}
$variation->set_regular_price( $variation_data['regular_price'] );
// Stock
if( ! empty($variation_data['stock_qty']) ){
$variation->set_stock_quantity( $variation_data['stock_qty'] );
$variation->set_manage_stock(true);
$variation->set_stock_status('');
} else {
$variation->set_manage_stock(false);
}
$variation->set_weight(''); // weight (reseting)
$variation->save(); // Save the data
}
else { //If product name does not have similarities a new one is made.
$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','_regular_price',"1" );
update_post_meta( $post_id,'_sale_price','_purchase_note',"" );
update_post_meta( $post_id,'_featured',"no" );
update_post_meta( $post_id,'_weight','_length','_width','_height','_sku',"");
update_post_meta( $post_id,'_product_attributes',array());
update_post_meta( $post_id,'_sale_price_dates_from','_sale_price_dates_to','_price','_sold_individually','_manage_stock','_backorders','_stock',"" );
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。