Отключить переменный ценовой диапазон продуктов только на страницах WooCommerce для одного продукта

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

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

Вот пример фрагмента, который я нашел:

/*
Disable Variable Product Price Range completely:
*/

add_filter( 'woocommerce_variable_sale_price_html', 'my_remove_variation_price', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'my_remove_variation_price', 10, 2 );

function my_remove_variation_price( $price ) {
  $price = '';
  return $price;
}

Пример цены вопроса ниже:

3 ответа

Решение

Давайте посмотрим на Visual Hook Guide. Ценовой диапазон является частью единого описания продукта. woocommerce_single_product_summary крючок состоит из:

 * @hooked woocommerce_template_single_title - 5
 * @hooked woocommerce_template_single_rating - 10
 * @hooked woocommerce_template_single_price - 10
 * @hooked woocommerce_template_single_excerpt - 20
 * @hooked woocommerce_template_single_add_to_cart - 30
 * @hooked woocommerce_template_single_meta - 40
 * @hooked woocommerce_template_single_sharing - 50

И woocommerce_template_single_price функция добавляет single-product/price.php Шаблон-часть.

Итак, у нас есть два пути:

1. Удалите эту часть шаблона только для переменных продуктов

add_action( 'woocommerce_before_single_product', 'my_remove_variation_price' );
function my_remove_variation_price() {
  global $product;
  if ( $product->is_type( 'variable' ) ) {
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price' );
  }
}

2. Или отредактируйте саму часть шаблона

копия wp-content/plugins/woocommerce/templates/single-product/price.php в wp-content/themes/YOUR_THEME/woocommerce/single-product/price.php и заменить этот фрагмент кода

  <p class="price"><?php echo $product->get_price_html(); ?></p>

с этим

<?php if ( ! $product->is_type( 'variable' ) ) : ?>
  <p class="price"><?php echo $product->get_price_html(); ?></p>
<?php endif; ?>
add_filter( 'woocommerce_variable_sale_price_html', 'ninja_remove_variation_price', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'ninja_remove_variation_price', 10, 2 );

function ninja_remove_variation_price( $price ) {
if ( is_product() ) {
$price = '';
}
return $price;
}

Этот код удалит текст «От», не удаляя полностью цену для различных товаров.

        add_filter( 'woocommerce_variable_price_html','variation_price_min', 9999, 2 );

  function variation_price_min( $price, $product ) {
  $prices = $product->get_variation_prices( true );
  $min_price = current( $prices['price'] );
  $price = sprintf( __( '%1$s', 'woocommerce' ), wc_price( $min_price ) );
  return $price;
   }
Другие вопросы по тегам