在WooCommerce中,对于可变产品,我想添加一个字段,向用户显示产品的一个单位的价格。例如,我有一个产品,价格为1000美元,一包100,但我想添加一个字段向用户显示每件的价格因此,应该向用户显示为单价字段输入的价格,而不是变化价格,但在我的代码中,它没有在产品页面上显示价格。
下面是我的代码:
// 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);
字符串
1条答案
按热度按时间ghhaqwfi1#
我已经完全修改了你的代码使用更新的代码和挂钩,取代所选的变化显示的价格,每单位的价格时设置:
字符串
代码放在你的子主题的functions.php文件中(或插件中)。测试和工作。
**添加:
所选的单位变动价格将替换产品变动价格范围。**
你将把我前面代码中的最后一个函数替换为:
型
然后,您还将添加以下代码:
型
测试和作品。
的数据