仅在 WooCommerce 单个产品页面上禁用可变产品价格范围
Disable Variable Product Price Range on the WooCommerce Single Product Pages Only
我希望仅在当前正在查看的产品的单个产品页面上隐藏可变产品价格范围。我不希望下面 "Related Products" 中列出的所有产品以及页脚小部件中列出的所有产品的价格范围都被禁用。
到目前为止我发现的每个片段都隐藏了单个产品页面上列出的每个产品的价格范围。它还完全隐藏价格,使所有产品的价格完全相同,因为它们在选择时不会显示在下拉列表下方。
这是我找到的片段示例:
/*
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;
}
下面的价格问题示例:
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;
}
让我们看看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; ?>
此代码将删除“来自”文本,但不会完全删除可变产品的价格。
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;
}
我希望仅在当前正在查看的产品的单个产品页面上隐藏可变产品价格范围。我不希望下面 "Related Products" 中列出的所有产品以及页脚小部件中列出的所有产品的价格范围都被禁用。
到目前为止我发现的每个片段都隐藏了单个产品页面上列出的每个产品的价格范围。它还完全隐藏价格,使所有产品的价格完全相同,因为它们在选择时不会显示在下拉列表下方。
这是我找到的片段示例:
/*
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;
}
下面的价格问题示例:
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;
}
让我们看看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; ?>
此代码将删除“来自”文本,但不会完全删除可变产品的价格。
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;
}