在不设置变量的情况下设置 WooCommerce 产品的价格范围

Set price range on WooCommerce products without setting up variables

在 woocommerce 中,我希望能够在不设置可变产品的情况下为我的简单产品设置价格范围,因为我不需要它。

参见下面的link:https://www.tnbloom.com.au/product/memorial-wreath/

例如,我想用 $45 - $120 [=19= 代替 $45 的实际价格](不设置变量product).

如有任何帮助,我们将不胜感激。

以下代码将在产品选项定价设置中添加自定义价格字段,以设置显示价格范围的最高价格。因此,您必须为每个产品设置最高价格。

然后它将在前端、商店、档案和单个产品页面上显示价格范围,前提是最大范围字段为其设置了价格。

代码:

// Add a custom field for price range to product in backend
add_action( 'woocommerce_product_options_pricing', 'add_field_product_options_pricing' );
function add_field_product_options_pricing() {
    global $post;

    echo '<div class="options_group show_if_simple">';

    woocommerce_wp_text_input( array(
        'id'            => '_max_price_for_range',
        'label'         => __('Max price for range', 'woocommerce').' ('.get_woocommerce_currency_symbol().')',
        'placeholder'   => __('Set the max price for range', 'woocommerce'),
        'description'   => __('Set the max price for range, to activate it…', 'woocommerce'),
        'desc_tip'      => 'true',
    ));

    echo '</div>';
}

// Save product custom field to database when submitted in Backend
add_action( 'woocommerce_process_product_meta', 'save_product_options_custom_fields', 30, 1 );
function save_product_options_custom_fields( $post_id ){
    // Saving custom field value
    if( isset( $_POST['_max_price_for_range'] ) ){
        update_post_meta( $post_id, '_max_price_for_range', sanitize_text_field( $_POST['_max_price_for_range'] ) );
    }
}

// Frontend: display a price range when the max price is set for the product
add_filter( 'woocommerce_get_price_html', 'custom_range_price_format', 10, 2 );
function custom_range_price_format( $price, $product ) {

    // Only for simple product type
    if( $product->is_type('simple') ){
        // Get the max price for range
        $max_price = get_post_meta( $product->get_id(), '_max_price_for_range', true );

        if( empty($max_price) )
            return $price; // exit

        $active_price = wc_get_price_to_display( $product, array( 'price' => $product->get_price() ) );

        $price = sprintf( '%s &ndash; %s', wc_price($active_price), wc_price($max_price) );
    }
    return $price;
}

代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。

在后端产品选项设置中:

前端产品: