基于 Woocommerce 3 中的 2 个自定义字段的产品正常价格计算
Posted
技术标签:
【中文标题】基于 Woocommerce 3 中的 2 个自定义字段的产品正常价格计算【英文标题】:Product regular price calculation based on 2 custom fields in Woocommerce 3 【发布时间】:2019-03-14 01:43:19 【问题描述】:在 Woocommerce 中,我在 Woocommerce 默认价格字段下的定价部分的管理员中设置了 2 个自定义字段:保证金率和购买价格。
我试图弄清楚如何根据以下计算自动更新产品价格(常规价格字段):
$product_price = $rate_margin * $purchase_price;
感谢任何帮助。
【问题讨论】:
【参考方案1】:您应该在问题中添加用于附加定价字段的代码。
下面的代码是:
-
显示和保存 2 个自定义字段:保证金率和购买价格。
保存根据这 2 个自定义字段值计算的新产品价格。
之前,您需要删除生成这 2 个自定义字段的代码(因为它将被我的替换)。
// Adding and displaying additional product pricing custom fields
add_action( 'woocommerce_product_options_pricing', 'additional_product_pricing_option_fields', 50 );
function additional_product_pricing_option_fields()
$domain = "woocommerce";
global $post;
echo '</div><div class="options_group pricing show_if_simple show_if_external show_if_composite">';
woocommerce_wp_text_input( array(
'id' => '_rate_margin',
'label' => __("Rate margin", $domain ),
'placeholder' => '',
'description' => __("Rate margin explanation goes here…", $domain ),
'desc_tip' => true,
) );
woocommerce_wp_text_input( array(
'id' => '_purchase_price',
'label' => __("Purchase price", $domain ) . ' ('. get_woocommerce_currency_symbol() . ')',
'placeholder' => '',
'description' => __("Rate margin explanation goes here…", $domain ),
'desc_tip' => true,
) );
echo '<input type="hidden" name="_custom_price_nonce" value="' . wp_create_nonce() . '">';
// Utility function that save "Rate margin" and "Purchase_price" custom fields values
function saving_rate_margin_and_purchase_price( $product )
// Security check
if ( isset($_POST['_custom_price_nonce']) && ! wp_verify_nonce($_POST['_custom_price_nonce']) )
return;
// Save "Rate margin" and "Purchase_price" custom fields values
if( isset($_POST['_rate_margin']) && isset($_POST['_purchase_price']) )
$product->update_meta_data('_rate_margin', sanitize_text_field( (float) $_POST['_rate_margin'] ) );
$product->update_meta_data('_purchase_price', sanitize_text_field( (float) $_POST['_purchase_price'] ) );
// Utility function: Calculate and save product price from the "Rate margin" and the "Purchase price" custom fields
function calculate_and_save_new_product_price( $product )
// Disable when product is on sale
if( isset($_POST['_sale_price']) && $_POST['_sale_price'] > 0 )
return;
// Calculate and save the new price
if( isset($_POST['_rate_margin']) && isset($_POST['_purchase_price'])
&& $_POST['_rate_margin'] > 0 && $_POST['_purchase_price'] > 0 )
// Catch the pricing data
$rate_margin = (float) $_POST['_rate_margin'];
$purchase_price = (float) $_POST['_purchase_price'];
$active_price = (float) $product->get_price();
// Calculating new price
$new_price = $rate_margin * $purchase_price;
// If the active price is different from the calculated new price
if( $new_price !== $active_price )
// Update regular price and active price with new calculated price
$product->set_price( $new_price );
$product->set_regular_price( $new_price );
// Saving and calculating prices
add_action( 'woocommerce_admin_process_product_object', 'update_product_meta_data', 100, 1 );
function update_product_meta_data( $product )
// Saving "Rate margin" and "Purchase_price" custom fields values
saving_rate_margin_and_purchase_price( $product ); // <== To be removed if not used with the first function
// Calculate and save product price from the "Rate margin" and the "Purchase price" custom fields
calculate_and_save_new_product_price( $product );
代码进入您的活动子主题(活动主题)的 function.php 文件中。经过测试并且可以工作。
【讨论】:
谢谢!节省一天!完美运行以上是关于基于 Woocommerce 3 中的 2 个自定义字段的产品正常价格计算的主要内容,如果未能解决你的问题,请参考以下文章
如何在 WooCommerce 3 中添加自定义工作运输方式
基于 Woocommerce 3 中的 2 个自定义字段的产品正常价格计算
从Woocommerce 3.4+中的结帐字段中删除“(可选)”文本
php [WooCommerce Instagram]如果您想将其更改为缩略图或其他图像尺寸,请将此代码添加到您的“自定义功能”区域