我正在使用下面的代码以编程方式创建一个可变产品,但创建的产品具有“任何徽章ID”的变体。例如,我想要一个徽章ID为1000的产品变体,并设置价格和数量。
/* Set the product attribute */
$attribute = new WC_Product_Attribute();
$attribute->set_name( 'Badge ID' );
$attribute->set_options( array( '1000' ) );
$attribute->set_position( 0 );
$attribute->set_visible( true );
$attribute->set_variation( true );
$product->set_attributes( array( $attribute ) );
$product->save();
$product_id = $product->get_id();
// Create the variation for the player product
$variation = new WC_Product_Variation();
$variation->set_virtual( true );
$variation->set_regular_price( $starting_price ); // in current currency
$variation->set_parent_id( $product_id );
$variation->set_attributes( array('Badge ID' => '1000') );
$variation->set_manage_stock(true);
$variation->set_stock_quantity( STARTING_STOCK);
$variation->set_stock_status('instock');
$variation->save();
字符串
如何将产品变量设置为1000
,而不是Any Badge ID
的变量?
1条答案
按热度按时间zsbz8rwp1#
要将产品变量设置为特定的徽章ID(例如,1000)而不是“任何徽章ID”,您需要确保正确设置属性选项和变量数据。以下是实现此目的的代码的更新版本:
字符串
**在此代码中:**我调整了变量的set_attributes方法,以使用属性名称(badge_id)和所需的选项值('1000')。我添加了一行,以使用set_title设置变量标题。此步骤是可选的,但有助于识别。请确保您使用的是正确的属性名称('Badge ID')和与您为属性设置的选项匹配的确切选项值('1000')。这将导致专门针对“Badge ID 1000”而不是“Any Badge ID”的变量。
这里有一个替代解决方案:
型
在此版本中,set_default_attributes()方法用于设置默认变量属性,set_variation_default()用于将变量标记为默认值。这应该可以实现将徽章ID为1000的变量作为默认值而不是“Any Badge ID”的结果。