Получить значение нового пользовательского поля в вариациях продукта Woocommerce? - PullRequest
1 голос
/ 09 марта 2020

Добрый день! Я создал новый поданный в вариациях продукт Woocommerce! Как получить значение этого поля для использования его в другой функции?

В общем, мне нужно передать значение из одной функции в другую, возможно ли это сделать вообще?

<code>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 '
'; // // $ meta = get_post_meta (); // var_dump ($ meta); // $ Вариация_num_cubi c = get_post_meta ($ Варианты ['Вариация_ид'], '_num_cubic_var', истина); // var_dump ($ Вариация_num_cubi c); foreach ($ cart_obj-> get_cart () как $ key => $ value) {$ product_total_price = (! пусто (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 ['вариация'] ['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); }}

функция создания поля

функция поля для использования

1 Ответ

0 голосов
/ 09 марта 2020

Вы имеете в виду это?

function ut_before_calculate_totals( $cart_obj ) {
    foreach( $cart_obj->get_cart() as $key => $value ) {
        //echo '', print_r($value, 1), '
'; // Идентификатор варианта $ var_id = $ value ['data'] -> get_id (); // выводим echo $ var_id. '
'; // Получить сообщение // выводим эхо $ Вариации_num_cubi c. '
'; }} add_action ('woocommerce_before_calculate_totals', 'ut_before_calculate_totals', 10, 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...