在WooCommerce中,对于可变产品,我想添加一个字段,向用户显示一单位产品的价格.例如,我有一个产品,每包100个,定价为1000美元,但我想添加一个字段来向用户显示每件(一个单位)的价格.因此,在单价字段中输入的价格应该显示给用户,而不是差异价格,但在我的代码中,它不会在产品页面上显示价格.
以下是我的代码:
// Add custom field to product variations
function add_price_per_unit_field_variation($loop, $variation_data, $variation) {
woocommerce_wp_text_input(array(
'id' => '_price_per_unit[' . $variation->ID . ']',
'label' => __('Price per unit for Variation ' . $loop, 'woocommerce'),
'placeholder' => '',
'desc_tip' => 'true',
'description' => __('Enter the price per unit for this variation.', 'woocommerce'),
'value' => get_post_meta($variation->ID, '_price_per_unit', true),
));
}
add_action('woocommerce_variation_options_pricing', 'add_price_per_unit_field_variation', 10, 3);
// Save custom field for product variations
function save_price_per_unit_field_variation($variation_id, $i) {
$price_per_unit = $_POST['_price_per_unit'][$variation_id];
update_post_meta($variation_id, '_price_per_unit', esc_attr($price_per_unit));
}
add_action('woocommerce_save_product_variation', 'save_price_per_unit_field_variation', 10, 2);
// Replace variation price with price per unit on product page
function display_price_per_unit_single($price, $product) {
if ($product->is_type('variable')) {
$price_per_unit = get_post_meta($product->get_id(), '_price_per_unit', true);
if (!empty($price_per_unit)) {
return wc_price($price_per_unit) . ' per unit';
}
}
return $price;
}
add_filter('woocommerce_variable_sale_price_html', 'display_price_per_unit_single', 10, 2);
add_filter('woocommerce_variable_price_html', 'display_price_per_unit_single', 10, 2);