Установка ценового диапазона для продуктов WooCommerce без настройки переменных - PullRequest
0 голосов
/ 24 мая 2018

IN WooCommerce Я хотел бы иметь возможность установить диапазон цен на мои простые продукты, не устанавливая переменный продукт, поскольку мне это не нужно.

См. Ссылку ниже: https://www.tnbloom.com.au/product/memorial-wreath/

Например, вместо фактической цены $ 45 , я хотел бы заменить ее на $ 45 - $ 120 (без настройки переменного продукта) .

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 24 мая 2018

Следующий код добавит настраиваемое поле цены в настройках цены параметров продукта, чтобы установить максимальную цену для отображаемого диапазона цен.Таким образом, вам нужно будет установить максимальную цену для каждого продукта.

Затем он будет отображать на переднем крае диапазон цен, на магазине, в архивах и на страницах отдельных продуктов, только если в поле максимального диапазона установлена ​​цена дляit.

Код:

// 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 вашей активной дочерней темы (или активной темы).Протестировано и работает.

В настройках опций продукта для бэкенда:

enter image description here

Продукты внешнего интерфейса:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...