1

让我简单地说。

  1. 我们在数据库中有具有颜色和尺寸属性的产品
  2. 产品均为可变产品
  3. 为每种颜色和“任何”尺寸添加了变化

然后我们编写了一些函数,为每个产品添加了 2 个更多变体,尺寸为 2XL 和 3XL(产品为 T 恤),价格更高!

变化添加得很漂亮,但是,在前端,当我选择价格增加的尺寸时,价格不会改变,除非我进入产品编辑页面并单击更新按钮。只有这样,添加到购物车的价格才会在选择该尺寸时发生变化。

如何使价格上涨的变化反映在前端,而无需单击每个产品的更新按钮?

4

2 回答 2

0

也许您需要variable_product_sync()在每个变量产品上运行?

function so_run_once(){

    $variable_products = get_posts( array(
            'posts_per_page'=> -1,
            'post_type'     => 'product',
            'fields'        => 'ids',
            'post_status'   => 'publish',
            'tax_query' => array(
            array(
                'taxonomy' => 'product_type',
                'field'    => 'slug',
                'terms'    => 'variable',
            ),
        )
    ) );

    if( $variable_products ) foreach( $variable_products as $product_id ){
        $_product = wc_get_product( $product_id );
        $_product->variable_product_sync();
    }
}
add_action( 'admin_init', 'so_run_once' );
于 2014-12-07T22:57:06.120 回答
0

找到了解决方案!插入变体后,我们不得不删除每个帖子的瞬态元数据。

$transient_name = 'wc_product_children_ids_' . $proudct_id;
delete_transient( $transient_name );
于 2014-12-08T00:18:49.057 回答