gpt4 book ai didi

php - 向产品属性添加新术语并将其设置在 Woocommerce 的产品中

转载 作者:行者123 更新时间:2023-12-03 18:37:24 25 4
gpt4 key购买 nike

我的自定义分类法(WooCommerce 属性)已经存在,我正在使用以下内容向分类法添加一个新术语并将其与我的 WooCommerce 产品相关联:

wp_set_object_terms($product_id, array($omega_jahr), 'pa_years-of-construction');

当我使用以下内容为我的产品调用 'pa_years_of_construction' 时,我可以看到新条款已被保存:
$v = array_values( wc_get_product_terms( $product->id, 'pa_years-of-construction', array( 'fields' => 'names' ) ) );

但是,当我在网站的后台和前端检查我的产品属性时,没有显示“pa_years_of_construction”属性。

我在这里缺少什么?

在此先感谢您的帮助!

最佳答案

产品属性是一个复杂的自定义分类法,需要的不仅仅是一行简单的代码......

以下代码将处理预先存在的产品属性的所有情况:

$taxonomy = 'pa_years-of-construction'; // The taxonomy

$term_name = '2009'; // The term "NAME"
$term_slug = sanitize_title($term_name); // The term "slug"

// Check if the term exist and if not it create it (and get the term ID).
if( ! term_exists( $term_name, $taxonomy ) ){
$term_data = wp_insert_term( $term_name, $taxonomy );
$term_id = $term_data['term_id'];
} else {
$term_id = get_term_by( 'name', $term_name, $taxonomy )->term_id;
}

// get an instance of the WC_Product Object
$product = wc_get_product( $product_id );

$attributes = (array) $product->get_attributes();

// 1. If the product attribute is set for the product
if( array_key_exists( $taxonomy, $attributes ) ) {
foreach( $attributes as $key => $attribute ){
if( $key == $taxonomy ){
$options = (array) $attribute->get_options();
$options[] = $term_id;
$attribute->set_options($options);
$attributes[$key] = $attribute;
break;
}
}
$product->set_attributes( $attributes );
}
// 2. The product attribute is not set for the product
else {
$attribute = new WC_Product_Attribute();

$attribute->set_id( sizeof( $attributes) + 1 );
$attribute->set_name( $taxonomy );
$attribute->set_options( array( $term_id ) );
$attribute->set_position( sizeof( $attributes) + 1 );
$attribute->set_visible( true );
$attribute->set_variation( false );
$attributes[] = $attribute;

$product->set_attributes( $attributes );
}

$product->save();

// Append the new term in the product
if( ! has_term( $term_name, $taxonomy, $product_id ))
wp_set_object_terms($product_id, $term_slug, $taxonomy, true );

测试和工作。

关于php - 向产品属性添加新术语并将其设置在 Woocommerce 的产品中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53705122/

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