"用于变化"以编程方式切换

时间:2017-02-01 11:28:33

标签: wordpress woocommerce

有860多种产品有不同的变化。任务是允许用户批量编辑"用于变体"某些属性的字段。例如,我们还有变体所需的尺寸,性别,但我们也有材料,仅限过滤器需要,因此删除此属性不是解决方案。

1 个答案:

答案 0 :(得分:0)

完全没有经过测试,并且如果您有很多产品可能会超时,并不是特别理想,但理论上您可以遍历所有变量产品并更新_product_attributes元值。我强烈建议您进行数据备份和/或这是一个临时站点。

function so_41978670_run_once(){
    $args = array(
        'post_type' => 'product',
        'posts_per_page' => -1 
        'tax_query' => array(
            array(
                'taxonomy' => 'post_type',
                'field'    => 'slug',
                'terms'    => 'variable',
            ),
        ),
    );
    $products = new WP_Query( $args );
    if( $products->have_posts() ){
        while ( $products->have_posts() ) {
            $products->the_post();
            $product_id = get_the_ID();
            $product = wc_get_product( $product_id );

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

            if ( $attributes ) {
                foreach ( $attributes as $attribute_key => $attribute ) {

                    if( in_array( $attribute_key, array( 'size', 'gender' ) ) ){
                        // Modify the attributes meta.
                        $attributes[ $attribute_key ]['is_variation'] = 1;
                    }
                }
            }
            update_post_meta( $product->get_id(), '_product_attributes', $attributes );

        }
        wp_reset_postdata();
    }
}