隐藏 Woocommerce 产品附加字段中显示的产品价格 [英] Hide displayed product prices from Woocommerce Product Add-ons Fields
问题描述
在 Woocommerce 中,我使用
这是没有价格的期望输出(黄色下划线):
我发现 product-addons/templates/addons/select.php 中的 select.php 可能是解决方案
我在 php 方面很差,所以我尝试注释掉一些东西......如果我注释掉第 27 行,那么我就有了所需的输出,但是来自插件的价格不计入产品总价:
$price_raw = apply_filters( 'woocommerce_product_addons_option_price_raw', $price, $option );
select.php
代码:
<p class="form-row form-row-wide wc-pao-addon-wrap wc-pao-addon-<?php echo sanitize_title( $field_name ); ?>"><select class="wc-pao-addon-field wc-pao-addon-select" name="addon-<?php echo sanitize_title( $field_name ); ?>"<?php if ( WC_Product_Addons_Helper::is_addon_required( $addon ) ) { echo 'required';} ?>><?php if ( empty( $required ) ) { ?><option value=""><?php esc_html_e( 'None', 'woocommerce-product-addons' );?></option><?php } else { ?><option value=""><?php esc_html_e( '选择一个选项...', 'woocommerce-product-addons' );?></option><?php } ?><?php foreach ( $addon['options'] as $i => $option ) {$循环++;$价格=!空($option['price'])?$option['price'] : '';$price_prefix = 0 <$价格?'+' : '';$price_type = !空($option['price_type'])?$option['price_type'] : '';$price_raw = apply_filters( 'woocommerce_product_addons_option_price_raw', $price, $option );$label = ( '0' === $option['label'] ) ||!空($option['label'])?$option['label'] : '';如果('percentage_based' === $price_type){$price_for_display = apply_filters( 'woocommerce_product_addons_option_price',$price_raw ?'(' . $price_prefix . $price_raw . '%)' : '',$选项,$i,'选择');} 别的 {$price_for_display = apply_filters( 'woocommerce_product_addons_option_price',$price_raw ?'(' . $price_prefix . wc_price( WC_Product_Addons_Helper::get_product_addon_price_for_display( $price_raw ) ) . ')' : '',$选项,$i,'选择');}$price_display = WC_Product_Addons_Helper::get_product_addon_price_for_display( $price_raw );如果('percentage_based' === $price_type){$price_display = $price_raw;}?><option data-raw-price="<?php echo esc_attr( $price_raw ); ?>"数据价格="<?php echo esc_attr( $price_display ); ?>"数据价格类型="<?php echo esc_attr( $price_type ); ?>"value="<?php echo sanitize_title( $label ) . '-' . $loop; ?>"data-label="<?php echo esc_attr( wptexturize( $label ) ); ?>"><?php echo wptexturize( $label ) .' ' .$price_for_display;?></option><?php } ?></选择></p>
感谢任何帮助.
无需覆盖任何模板或更改核心代码,您可以尝试使用以下挂钩函数之一:
add_filter('woocommerce_product_addons_option_price', '__return_empty_string');
或者,如果您需要添加一些 IF
语句,如本例所示:
add_filter( 'woocommerce_product_addons_option_price', 'filter_product_addons_option_price', 10, 4 );function filter_product_addons_option_price( $price, $option, $i, $type ){全球$产品;if( $product->get_id() == 123 && $type = 'select' ) {$价格'';}返回 $price;}
代码位于活动子主题(或活动主题)的 function.php 文件中.它应该有效.
In Woocommerce I am using Woocommerce Product Add-Ons plugin and I am trying to figure out how I can hide the prices from Add-ons fields.
This is the current output with prices:
This is the desired Output without prices (yellow underlined):
I figured out that the the select.php in product-addons/templates/addons/select.php could be the the solution
I'm bad in php so i try to comment out some things ... if I comment out line 27 then I have the desired output, but the Price from the addons does not count to the product total price:
$price_raw = apply_filters( 'woocommerce_product_addons_option_price_raw', $price, $option );
The select.php
code:
<?php
/**
* The Template for displaying select field.
*
* @version 3.0.0
*/
$loop = 0;
$field_name = ! empty( $addon['field_name'] ) ? $addon['field_name'] : '';
$required = ! empty( $addon['required'] ) ? $addon['required'] : '';
$current_value = isset( $_POST['addon-' . sanitize_title( $field_name ) ] ) ? wc_clean( $_POST[ 'addon-' . sanitize_title( $field_name ) ] ) : '';
?>
<p class="form-row form-row-wide wc-pao-addon-wrap wc-pao-addon-<?php echo sanitize_title( $field_name ); ?>">
<select class="wc-pao-addon-field wc-pao-addon-select" name="addon-<?php echo sanitize_title( $field_name ); ?>" <?php if ( WC_Product_Addons_Helper::is_addon_required( $addon ) ) { echo 'required'; } ?>>
<?php if ( empty( $required ) ) { ?>
<option value=""><?php esc_html_e( 'None', 'woocommerce-product-addons' ); ?></option>
<?php } else { ?>
<option value=""><?php esc_html_e( 'Select an option...', 'woocommerce-product-addons' ); ?></option>
<?php } ?>
<?php foreach ( $addon['options'] as $i => $option ) {
$loop++;
$price = ! empty( $option['price'] ) ? $option['price'] : '';
$price_prefix = 0 < $price ? '+' : '';
$price_type = ! empty( $option['price_type'] ) ? $option['price_type'] : '';
$price_raw = apply_filters( 'woocommerce_product_addons_option_price_raw', $price, $option );
$label = ( '0' === $option['label'] ) || ! empty( $option['label'] ) ? $option['label'] : '';
if ( 'percentage_based' === $price_type ) {
$price_for_display = apply_filters( 'woocommerce_product_addons_option_price',
$price_raw ? '(' . $price_prefix . $price_raw . '%)' : '',
$option,
$i,
'select'
);
} else {
$price_for_display = apply_filters( 'woocommerce_product_addons_option_price',
$price_raw ? '(' . $price_prefix . wc_price( WC_Product_Addons_Helper::get_product_addon_price_for_display( $price_raw ) ) . ')' : '',
$option,
$i,
'select'
);
}
$price_display = WC_Product_Addons_Helper::get_product_addon_price_for_display( $price_raw );
if ( 'percentage_based' === $price_type ) {
$price_display = $price_raw;
}
?>
<option data-raw-price="<?php echo esc_attr( $price_raw ); ?>" data-price="<?php echo esc_attr( $price_display ); ?>" data-price-type="<?php echo esc_attr( $price_type ); ?>" value="<?php echo sanitize_title( $label ) . '-' . $loop; ?>" data-label="<?php echo esc_attr( wptexturize( $label ) ); ?>"><?php echo wptexturize( $label ) . ' ' . $price_for_display; ?></option>
<?php } ?>
</select>
</p>
Any help is appreciated.
Without overriding any template or changing core code, you could try to use one of the following hooked functions:
add_filter( 'woocommerce_product_addons_option_price', '__return_empty_string' );
Or may be if you need to add some IF
statements like in this example:
add_filter( 'woocommerce_product_addons_option_price', 'filter_product_addons_option_price', 10, 4 );
function filter_product_addons_option_price( $price, $option, $i, $type ){
global $product;
if( $product->get_id() == 123 && $type = 'select' ) {
$price '';
}
return $price;
}
Code goes in function.php file of your active child theme (or active theme). It should works.
这篇关于隐藏 Woocommerce 产品附加字段中显示的产品价格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!