为了账号安全,请及时绑定邮箱和手机立即绑定

从 WooCommerce 中的变体产品获取自定义字段值和最高价格

从 WooCommerce 中的变体产品获取自定义字段值和最高价格

PHP
蛊毒传说 2023-06-18 17:45:45
我正在尝试显示来自 XX 的变体自定义价格跨度。最低价格来自(多个)自定义字段值,我需要使用最低值。最高价格应该是变化最高价格。如果变体具有bulk_price价值,我只想要这个,并且只在档案页面中显示它。我需要获取自定义字段值和最高价格。这就是我所拥有的:function change_product_price_display( $price) {    $bulk_price = get_post_meta([ 'variation_id' ], 'bulk_price', true);    $priceMax        = $product->get_variation_price('max'); // Max price    //only show in archives     if (is_product_category()) {        //only if there is a bulk price        if ( $bulk_price ) {            return ' <span class="price-suffix">' . ' From ' . get_woocommerce_currency_symbol() .__( $bulk_price , "woocommerce") . ' - ' . $priceMax   . '</span>';           }    }    //don't affect other products    else {        return $price;    }   }add_filter( 'woocommerce_get_price_html', 'change_product_price_display');add_filter( 'woocommerce_cart_item_price', 'change_product_price_display');
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

在产品类别存档中显示最低值(自定义字段)到最高价格。注释并在代码中添加解释


// Display on product category archive lowest value to max price

function change_product_price_display( $price, $product ) {

    // Returns true when viewing a product category archive.

    if ( is_product_category() ) {

        // Set array

        $bulk_prices = array();


        // Loop for variations IDs

        foreach( $product->get_children() as $variation_id ) {

            // Get post meta

            $bulk_price = get_post_meta($variation_id, 'bulk_price', true);


            // True

            if( $bulk_price ) {

                // Push

                $bulk_prices[] = $bulk_price;   

            }

        }


        // NOT empty

        if( sizeof($bulk_prices) > 0 ) {

            // Sort: low to high

            sort($bulk_prices);


            // First value

            $lowest_value = reset( $bulk_prices );


            // Get max price

            $price_max = $product->get_variation_price('max');


            // Output

            $price = '<span class="price-suffix">From ' . get_woocommerce_currency_symbol() . $lowest_value . ' - ' . wc_price($price_max) . '</span>';

        }

    }


    return $price;

}

add_filter( 'woocommerce_variable_price_html', 'change_product_price_display', 10, 2 );

为清楚起见,创建和保存自定义字段的代码


// Add custom field input product variations

function action_woocommerce_variation_options_pricing( $loop, $variation_data, $variation ) {  

    woocommerce_wp_text_input( array(

        'id'          => 'bulk_price[' . $loop . ']',

        'desc_tip'    => 'true',

        'description' => __( 'Enter the Bulk price here.', 'woocommerce' ),

        'label'       => __( 'Custom Field', 'woocommerce' ),

        'value'       => get_post_meta( $variation->ID, 'bulk_price', true )

    ));

}

add_action( 'woocommerce_variation_options_pricing', 'action_woocommerce_variation_options_pricing', 10, 3 );


// Save custom field on product variation save

function action_woocommerce_save_product_variation( $variation_id, $i ) {

    $bulk_price = $_POST['bulk_price'][$i];

    if ( isset( $bulk_price ) ) {

        update_post_meta( $variation_id, 'bulk_price', esc_attr( $bulk_price ) );

    }

}

add_action( 'woocommerce_save_product_variation', 'action_woocommerce_save_product_variation', 10, 2 );



查看完整回答
反对 回复 2023-06-18
  • 1 回答
  • 0 关注
  • 161 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信