WooCommerce以不同的价格以编程方式添加产品变体不会反映在产品页面上

时间:2014-12-07 20:28:25

标签: php wordpress woocommerce variations

让我说清楚。

  1. 我们在数据库中有颜色和尺寸属性的产品
  2. 产品都是可变产品
  3. 为每种颜色和“任意”尺寸
  4. 添加变体

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

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

    如何在不必点击每个产品的更新按钮的情况下,使价格上涨的变化反映在前端?

2 个答案:

答案 0 :(得分: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' );

答案 1 :(得分:0)

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

$transient_name = 'wc_product_children_ids_' . $proudct_id;
delete_transient( $transient_name );