Add the variation price to variable product dropdown item names in Woocommerce

前端 未结 2 1830
孤独总比滥情好
孤独总比滥情好 2021-01-25 13:21

I\'m using this code to get the variable product options

$terms = wc_get_product_terms( $bundle_product_id, $name, array( \'fields\' => \'all\' ) );
foreach (         


        
2条回答
  •  时光说笑
    2021-01-25 13:30

    Here is my simplified solution to this that is working with WooCommerce 4.7.0. Since we know there is only one attribute for each variation, we can just get the first value to show the correct price for each.

    /**
     * Display price in variation options dropdown for products that have only one attribute.
     *
     * @param  string $term Existing option term value.
     * @return string $term Existing option term value or updated term value with price.
     */
    function display_price_in_variation_options( $term ) {
        $product = wc_get_product();
        $id      = $product->get_id();
        if ( empty( $term ) || empty( $id ) ) {
            return $term;
        }
        if ( $product->is_type( 'variable' ) ) {
            $product_variations = $product->get_available_variations();
        } else {
            return $term;
        }
        foreach ( $product_variations as $variation ) {
            if ( count( $variation['attributes'] ) > 1 ) {
                return $term;
            }
            $attribute = array_values( $variation['attributes'] )[0];
            if ( $attribute === $term ) {
                $term .= ' (' . wp_strip_all_tags( wc_price( $variation['display_price'] ) ) . ')';
            }
        }
        return $term;
    }
    add_filter( 'woocommerce_variation_option_name', 'display_price_in_variation_options' );
    

提交回复
热议问题