우커머스는 가격을 계산하고 절약합니다.
이 훌륭한 튜토리얼 http://www.remicorson.com/mastering-woocommerce-products-custom-fields/ 을 사용하여 Woocmerce/Add Product/General 탭에 사용자 지정 필드를 추가했습니다.
사용자 정의 필드(높이, 너비, 승수)가 데이터베이스 OK(확인)에 저장되고 있습니다.나는 커스텀 필드를 기반으로 가격을 계산하고, 그 가격을 정가로 데이터베이스에 저장하고 싶습니다.문제는 가격이 저장되지 않고 있다는 것입니다.
여기 제 코드가 있습니다. 함수에서.내 아이 테마의 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 '<div class="options_group">';
// 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 '</div>';
}
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));
}
혹시 우커머스에서 가격 업데이트를 위해 누락된 구문이나 체크가 있는 것은 아닐까요?
당신이 가격에 문제가 있다는 것을 프론트엔드에 표시하고 있습니다.업데이트해야 합니다._price
반영하고 싶다면 키_regular_price
맨 앞에
다음 코드를 사용해 보십시오.
if (!empty($area_price)){
update_post_meta($post_id, '_regular_price', esc_attr($area_price));
update_post_meta($post_id, '_price', esc_attr($area_price)); //<-- Add this line.
}
업데이트됨
우선 순위를 더 높이면 됩니다.woocommerce_process_product_meta
액션 훅, 효과가 있을 겁니다.
add_action('woocommerce_process_product_meta', 'woo_add_custom_general_fields_save', 99);
제가 테스트해봤는데 잘 작동하고 있습니다.
도움이 되길 바랍니다!
언급URL : https://stackoverflow.com/questions/41628018/woocommerce-calculate-and-save-price
'programing' 카테고리의 다른 글
CSS를 사용하면 캔버스가 늘어나지만 '너비'와 '높이' 속성은 정상입니다. (0) | 2023.11.01 |
---|---|
Spring Security에서 보안 주석 구성에서 URL 패턴 제외 (0) | 2023.11.01 |
LISTAGG 윈도잉 절과 동등함 (0) | 2023.11.01 |
한 사용자가 수정한 모든 파일을 알려줄 수 있습니까? (0) | 2023.11.01 |
libfoo.so .1과 같은 라이브러리 이름이 지정된 전체 파일 경로는 어떻게 찾을 수 있습니까? (0) | 2023.11.01 |