gpt4 book ai didi

php - WooCommerce 以编程方式创建的产品忽略价格排序过滤器

转载 作者:行者123 更新时间:2023-12-04 08:08:28 25 4
gpt4 key购买 nike

我有以下功能可以在前端创建新的 woocommerce 产品。

parse_str($_POST['form_data'], $form_data);
$insertPost = array(
//'ID' => $post_id,
'post_title' => $form_data['post_title'],
'post_status' => $form_data['post_status'],
'post_type' => 'product',
'post_content' => $form_data['post_content']
);
$insert_post = wp_insert_post( $insertPost, true);
update_post_meta( $insert_post, 'hours', $form_data['hours'] );
update_post_meta( $insert_post, 'year', $form_data['year'] );
update_post_meta( $insert_post, '_weight', $form_data['_weight'] );
update_post_meta( $insert_post, '_price', $form_data['_regular_price'] );
update_post_meta( $insert_post, '_regular_price', $form_data['_regular_price'] );
update_post_meta( $insert_post, '_sale_price', $form_data['_sale_price'] );
update_post_meta( $insert_post, '_stock_status', $form_data['_stock_status'] );
$term_taxonomy_ids = wp_set_object_terms( $insert_post, array(15), 'product_cat' );
wp_set_object_terms( $insert_post, 'simple', 'product_type' );

上面的代码正在创建一个新产品并按预期向其中添加所有数据。
问题是当使用按价格筛选器排序时,排序并没有真正对以正确方式创建的新产品进行排序,它只是忽略了它。
搜索后,我在 WooCommerce > 状态 > 工具 > 产品查找表(重新生成)中找到
一旦我单击重新生成按钮,它就会重新生成所有产品数据,并且价格排序按预期工作。
那么我的功能中缺少什么来使价格排序在没有重新生成按钮的情况下工作?

最佳答案

有一些自定义 WooCommerce 数据库表和缓存数据,您的过时代码无法处理,因此请使用以下(使用 WC_Product 方法),例如:

parse_str($_POST['form_data'], $form_data);

// Get an empty instance of the WC_Product Object (with the correct product type)
$product = new WC_Product_Simple(); // "simple" product type

$product->set_name($form_data['post_title']);
$product->set_status($form_data['post_status']);
$product->set_description($form_data['post_content']);

if( isset($form_data['post_excerpt']) ) {
$product->set_short_description($form_data['post_excerpt']); // Optional
}

$product->add_meta_data('hours', $form_data['hours']);
$product->add_meta_data('year', $form_data['year']);

$product->set_price($form_data['_regular_price']);
$product->set_regular_price($form_data['_regular_price']);
$product->set_sale_price($form_data['_sale_price']);

$product->set_weight($form_data['_weight']);

$product->set_stock_status($form_data['_stock_status']);

$product->set_category_ids( array(15) );

$product->save(); // Save to database
它现在应该可以与“按价格过滤器排序”一起使用,而无需重新生成产品数据。
相关: Create programmatically a product using CRUD methods in Woocommerce 3

关于php - WooCommerce 以编程方式创建的产品忽略价格排序过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66101321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com