Редко но возникает ситуация когда необходимо для части товаров выставить цену по запросу на товары. Я не сторонник такого подхода, но объективно иногда это необходимо и поэтому потребовалось простое решение, которое позволит такое реализовать. Покопался поискал и нашёл добавил на сайт сниппет, который позволяет это сделать.
Итак для этого в function.php темы вставляем следующий код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
// Показ цены по запросу для товаров add_filter( 'woocommerce_get_price_html', 'empty_and_zero_price_html', 20, 2 ); function empty_and_zero_price_html( $price, $product ) { $empty_price = __('ЦЕНА ПО ЗАПРОСУ', 'woocommerce'); if( $product->is_type('variable') ) { $prices = $product->get_variation_prices( true ); if ( empty( $prices['price'] ) ) { return $empty_price; // <=== HERE below for empty price } else { $min_price = current( $prices['price'] ); $max_price = end( $prices['price'] ); if ( $min_price === $max_price && 0 == $min_price ) { return $empty_price; // <=== HERE for zero price } elseif ( $min_price !== $max_price && 0 == $min_price ) { return wc_price( $max_price ); } } } elseif( $product->is_type('simple') ) { if ( '' === $product->get_price() || 0 == $product->get_price() ) { return $empty_price; // <=== HERE for empty and zero prices } } return $price; } // Показать цена по запросу для вариций add_filter( 'woocommerce_available_variation', 'empty_and_zero_variation_prices_html', 10, 3); function empty_and_zero_variation_prices_html( $data, $product, $variation ) { if( '' === $variation->get_price() || 0 == $variation->get_price() ) $data['price_html'] = __('Цена по запросу', 'woocommerce'); // <=== HERE for empty and zero prices return $data; } |
Всё, далее чтобы это работало ставим товару цену нулевую и все работает. При желании слова Цена по запросу можно поменять ну другой вариант. Хорошей работы!