function - Woocommerce:在功能中更改产品类型
问题描述
我需要在函数中将产品类型从更改simple
为variable
。
我越接近这个,但不工作。我需要有关代码第 2 行的帮助:
我必须使用$product->save();
// Line 1: GET THE PRODUCT
$product = wc_get_product( get_the_id() );
// Line 2: SET THE PRODUCT TYPE TO: 'variable'
wp_set_object_terms( $product, 'variable', 'product_type' );
// Line 2: (I also tried this) SET THE PRODUCT TYPE TO: 'variable'
$product->set_product_type( 'variable' );
// Line 3: SAVE THE PRODUCT
$product->save();
更新1:我试过这个,但不工作:
add_action( 'template_redirect', 'save_product_on_page_load' );
function save_product_on_page_load() {
if ( get_post_type() === "product" ){
$product = wc_get_product( get_the_id() );
if ( $product->is_type('simple') ) {
echo $productId = $product->get_id();
wp_remove_object_terms( $productId, 'simple', 'product_type' );
wp_set_object_terms( $productId, 'variable', 'product_type', true );
$product->save();
}
}
}
解决方案
我认为您必须先删除旧对象术语,然后再应用新对象术语。wp_remove_object_terms
将删除旧的对象术语。
确保您的产品 ID 不为空。
这是一个简单的例子,它工作并经过测试
function woo_set_type_function(){
$product_id = 18; //your product ID
wp_remove_object_terms( $product_id, 'simple', 'product_type' );
wp_set_object_terms( $product_id, 'variable', 'product_type', true );
}
add_action('init', 'woo_set_type_function'); //init is for testing purpose only
推荐阅读
- vba - Chartobject.Delete 没有删除图表?
- android-jobscheduler - Oppo Realme1 Job Schduler 定期工作的最小间隔为 1 小时
- regex - 匹配正则表达式并用特殊字符替换错误
- python - 带有列名变量的 Executemany() SQL-Update 语句
- python - Google 日历 API 无法获取事件 colorid - Python
- android - 如何强制 ORM lite 生成正确的 DELETE 查询?
- android - OpenCV Native Android cvtColor 崩溃
- python - 将十进制转换为 MM:SS:MS Django
- mongodb - Mongodb:连接到副本集
- django - Django 基本模板位置