![](/img/trans.png)
[英]Replace product variations prices with custom field value in WooCommerce
[英]Get value new custom field in variations product Woocommerce?
再會! 我在變體產品 Woocommerce 中創建了新的自定義文件! 如何獲取該字段的值以在其他功能中使用他?
一般來說,我需要將一個值從一個函數傳遞到另一個函數,是否有可能做到這一點?
add_action( 'woocommerce_product_after_variable_attributes', 'num_cubicmeters_fields', 10, 3 );
function num_cubicmeters_fields( $loop, $variation_data, $variation ) {
woocommerce_wp_text_input( array(
'id' => '_num_cubic_var[' . $variation->ID . ']', // id поля
'label' => 'Количество кубометров', // Надпись над полем
'description' => 'Укажи количество кубометров',// Описание поля
'desc_tip' => 'true', // Всплывающая подсказка
'placeholder' => 'Количество кубометров, м3', // Надпись внутри поля
'type' => 'number', // Тип поля
'custom_attributes' => array( // Произвольные аттрибуты
'step' => 'any', // Шаг значений
'min' => '0', // Минимальное значение
),
'value' => get_post_meta( $variation->ID, '_num_cubic_var', true ),
) );
}
add_action( 'woocommerce_save_product_variation', 'art_save_variation_settings_fields', 10, 2 );
function art_save_variation_settings_fields( $post_id ) {
$woocommerce__num_cubic_var = $_POST['_num_cubic_var'][ $post_id ];
if (isset($woocommerce__num_cubic_var) && ! empty( $woocommerce__num_cubic_var ) ) {
update_post_meta( $post_id, '_num_cubic_var', esc_attr( $woocommerce__num_cubic_var ) );
}
}
add_filter( 'woocommerce_available_variation', 'load_variation_settings_fields' );
function load_variation_settings_fields( $variations ) {
$variations_num_cubic = get_post_meta( $variations['variation_id'], '_num_cubic_var', true );
if ( isset( $variations_num_cubic ) && ! empty( $variations_num_cubic ) ) {
$variations['_num_cubic_var'] = '<div class="num-cubicmeters-prod">';
$variations['_num_cubic_var'] .= '<span>Количество Кубометров</span>';
$variations['_num_cubic_var'] .= get_post_meta( $variations['variation_id'], '_num_cubic_var', true ) . ' м3';
$variations['_num_cubic_var'] .= '</div>';
}
return $variations;
}
function ut_before_calculate_totals( $cart_obj ) {
//// global $product;
//// echo '<pre>';
//// var_dump($product);
//// echo '</pre>';
//
// $meta = get_post_meta();
// var_dump($meta);
// $variations_num_cubic = get_post_meta( $variations['variation_id'], '_num_cubic_var', true );
// var_dump($variations_num_cubic);
foreach( $cart_obj->get_cart() as $key => $value ) {
$product_total_price = ( !empty( get_post_meta( $value['data']->get_id(), '_sale_price', true) ) ) ? get_post_meta( $value['data']->get_id(), '_sale_price', true) : get_post_meta( $value['data']->get_id(), '_regular_price', true);
$volume = ( isset( $value['variation']['attribute_m-3-na-poddone'] ) ) ? $value['variation']['attribute_m-3-na-poddone'] : 1 ;
$result_price = $product_total_price * $volume ;
$value['data']->set_price( $result_price );
}
}
你是這個意思嗎?
function ut_before_calculate_totals( $cart_obj ) {
foreach( $cart_obj->get_cart() as $key => $value ) {
//echo '<pre>', print_r($value, 1), '</pre>';
// The variation ID
$variation_id = $value['data']->get_id();
// output
echo $variation_id . '<br>';
// Get post meta
$variations_num_cubic = get_post_meta( $variation_id, '_num_cubic_var', true );
// output
echo $variations_num_cubic . '<br>';
}
}
add_action( 'woocommerce_before_calculate_totals', 'ut_before_calculate_totals', 10, 1 );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.