仅在WooCommerce单一产品页面上禁用可变产品价格范围

时间:2017-06-08 23:34:33

标签: php wordpress woocommerce hook-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;
}

以下价格问题示例:
enter image description here

3 个答案:

答案 0 :(得分:3)

让我们看看the 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; ?>

答案 1 :(得分:0)

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;
}

答案 2 :(得分:0)

此代码将删除“From”文本,而不会完全删除可变产品的价格。

  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;
   }