Показывать цену вариации по умолчанию для переменных продуктов на страницах магазина Woocommerce - PullRequest
0 голосов
/ 04 июня 2018

Мне интересно, как я могу отобразить цену товара на странице магазина.Прямо сейчас мои переменные продукты показаны в их ценовом диапазоне.Shope page

Но оба эти продукта были настроены с переменными параметрами по умолчанию: Default Parameters

Когда вы нажимаете на товар, он отображается следующим образом: Single Product

Как вы видите, цена этого конкретного выбора составляет €300, мне интересно, как я могу отобразить это €300 на странице магазина вместо €150-€2.003

1 Ответ

0 голосов
/ 04 июня 2018

Можно получить цену варианта по умолчанию, установленную в переменном продукте, и отобразить ее на страницах магазинов и архивов:

add_filter( 'woocommerce_variable_price_html', 'custom_variable_displayed_price', 10, 2 );
function custom_variable_displayed_price( $price_html, $product ) {
    // Only for archives pages
    if ( ! ( is_shop() || is_product_category() || is_product_tag() ) )
        return $price_html;

    // Searching for the default variation
    $default_attributes = $product->get_default_attributes();
    // Loop through available variations
    foreach($product->get_available_variations() as $variation){
        $found = true; // Initializing
        // Loop through variation attributes
        foreach( $variation['attributes'] as $key => $value ){
            $taxonomy = str_replace( 'attribute_', '', $key );
            // Searching for a matching variation as default
            if( isset($default_attributes[$taxonomy]) && $default_attributes[$taxonomy] != $value ){
                $found = false;
                break;
            }
        }
        // When it's found we set it and we stop the main loop
        if( $found ) {
            $default_variaton = $variation;
            break;
        } // If not we continue
        else {
            continue;
        }
    }

    // If no default variation is found we exit.
    if( ! isset($default_variaton) )
        $price_html;

    // Formatting the price
    if ( $default_variaton['display_price'] !== $default_variaton['display_regular_price'] && $product->is_on_sale()) {
        $price_html = '<del>' . wc_price($default_variaton['display_regular_price']) . '</del> <ins>' . wc_price($default_variaton['display_price']) . '</ins>';
    } else {
        $price_html = wc_price($default_variaton['display_price']);
    }
    return $price_html;
}

Код помещается в файл function.php вашей активной дочерней темы (или активная тема).Протестировано и работает.

Соответствующий ответ: Отображение цены вариации по умолчанию и суммы экономии в Woocommerce 3

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