php 价格计算,php – woocommerce计算并节省价格

我使用这个优秀的教程

http://www.remicorson.com/mastering-woocommerce-products-custom-fields/将自定义字段添加到Woocommerce / Add Product / General选项卡

自定义字段(高度,宽度,乘数)正在保存到数据库中.

我想根据自定义字段计算价格,并将价格作为常规价格保存到数据库中.

问题是价格没有得到保存.

这是我的代码,来自我的子主题中的functions.php:

/* CUSTOM FIELDS: Add custom fields to Product/General pane in Woocommerce

from http://www.remicorson.com/mastering-woocommerce-products-custom-fields/ */

// Display Fields

add_action('woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields');

// Save Fields

add_action('woocommerce_process_product_meta', 'woo_add_custom_general_fields_save');

function woo_add_custom_general_fields()

{

global $woocommerce, $post;

echo '

';

// Product Height

woocommerce_wp_text_input(

array(

'id' => '_product_height',

'label' => __('Product Height (inches)', 'woocommerce'),

'placeholder' => '',

'description' => __('Enter the product height in inches here.', 'woocommerce'),

'type' => 'number',

'custom_attributes' => array(

'step' => 'any',

'min' => '0'

)

)

);

// Product Width

woocommerce_wp_text_input(

array(

'id' => '_product_width',

'label' => __('Product Width (inches)', 'woocommerce'),

'placeholder' => '',

'description' => __('Enter the product width in inches here.', 'woocommerce'),

'type' => 'number',

'custom_attributes' => array(

'step' => 'any',

'min' => '0'

)

)

);

// Product Area Multiplier

woocommerce_wp_text_input(

array(

'id' => '_product_area_mult',

'label' => __('Product Area Multiplier', 'woocommerce'),

'placeholder' => '',

'description' => __('Enter Product Area Multiplier. ', 'woocommerce'),

'type' => 'number',

'custom_attributes' => array(

'step' => 'any',

'min' => '0'

)

)

);

// Product Area Price: added this field to check if this value is being calculated

woocommerce_wp_text_input(

array(

'id' => '_product_area_price',

'label' => __('Product Area Price', 'woocommerce'),

'placeholder' => '',

'description' => __('Product Area Price. Calculated automatically', 'woocommerce'),

'type' => 'number',

'custom_attributes' => array(

'step' => 'any',

'min' => '0'

)

)

);

echo '

';

}

function woo_add_custom_general_fields_save($post_id)

{

$woocommerce_product_height = $_POST['_product_height'];

$woocommerce_product_width = $_POST['_product_width'];

$woocommerce_product_area_mult = $_POST['_product_area_mult'];

$woocommerce_product_area_price = $_POST['_product_area_price'];

// save height, width, multiplier

if (!empty($woocommerce_product_height))

update_post_meta($post_id, '_product_height', esc_attr($woocommerce_product_height));

if (!empty($woocommerce_product_width))

update_post_meta($post_id, '_product_width', esc_attr($woocommerce_product_width));

if (!empty($woocommerce_product_area_mult))

update_post_meta($post_id, '_product_area_mult', esc_attr($woocommerce_product_area_mult));

// calculate and save _product_area_price, _regular_price, price as Height*Width*Mult

if (!empty($woocommerce_product_height) && !empty($woocommerce_product_width) && !empty($woocommerce_product_area_mult))

$woocommerce_product_area_price = $woocommerce_product_height * $woocommerce_product_width * $woocommerce_product_area_mult;

if (!empty($woocommerce_product_area_price))

update_post_meta($post_id, '_product_area_price', esc_attr($woocommerce_product_area_price));

if (!empty($woocommerce_product_area_price))

{

update_post_meta($post_id, '_regular_price', esc_attr($woocommerce_product_area_price));

update_post_meta($post_id, '_price', esc_attr($woocommerce_product_area_price));

}

}

除了更新数据库中的价格字段外,一切正常.我的自定义字段使用相同的语法更新.我确认变量$woocommerce_product_area_price存在,并且它正在更新自定义字段,但相同的变量不会更新_regular_price或_price字段.所以这些行不起作用,即使相同的变量将更新_product_area_price字段:

if (!empty($woocommerce_product_area_price))

{

update_post_meta($post_id, '_regular_price', esc_attr($woocommerce_product_area_price));

update_post_meta($post_id, '_price', esc_attr($woocommerce_product_area_price));

}

也许有一些语法或检查我缺少更新Woocommerce的价格?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值