Не удается получить настраиваемые поля продукта woocommerce - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь получить пользовательские поля с помощью этой функции и умножить на цену продукта. Я получаю цену продукта, но при печати пользовательских полей я получаю только нули ... Я не понимаю, почему, я пробовал get_metadata() и get_post_custom() тоже ... но ничего не работает

    function filter_woocommerce_cart_product_subtotal( $product_subtotal, $product, $quantity, $instance ) { 
        $fields = get_post_meta(get_the_id(), false);
        $add_on = $product->get_price()*$fields[0] + $product->get_price()*$fields[1] + $product- 
                  >get_price()*0.75*$fields[2];

        return $product_subtotal + $add_on; 
}; 
add_filter( 'woocommerce_cart_product_subtotal', 'filter_woocommerce_cart_product_subtotal', 10, 4 ); 

Я также пытался получить отдельные поля, но всегда получал нули.

Я могу получить пользовательские поля в функции ниже и сохранить ее в глобальной переменной, но когда я пытаюсь получить доступ к глобальной переменной в функции выше, я получить ноль снова.

function tour_product_add_on_cart_item_data( $cart_item, $product_id, $cart ){
/*
if( isset( $_POST['time_add_on'] ) ) {
    $cart_item['time_add_on'] = sanitize_text_field( $_POST['time_add_on'] );
}
*/
if( isset( $_POST['date_add_on'] ) ) {
    $cart_item['date_add_on'] = sanitize_text_field( $_POST['date_add_on'] );
}
if( isset( $_POST['place_add_on'] ) ) {
    $cart_item['place_add_on'] = sanitize_text_field( $_POST['place_add_on'] );
}
if( isset( $_POST['adult_add_on'] ) ) {
    $cart_item['adult_add_on'] = sanitize_text_field( $_POST['adult_add_on'] );
}
if( isset( $_POST['child_add_on'] ) ) {
    $cart_item['child_add_on'] = sanitize_text_field( $_POST['child_add_on'] );
}
if( isset( $_POST['infant_add_on'] ) ) {
    $cart_item['infant_add_on'] = sanitize_text_field( $_POST['infant_add_on'] );
}
    $product = wc_get_product($product_id);
    $GLOBALS["fee"] = $_POST['adult_add_on']*$product->get_price() + 
 $_POST['child_add_on']*$product->get_price() + $_POST['infant_add_on']*0.75*$product->get_price();
    return $cart_item;

}

Ответы [ 2 ]

1 голос
/ 07 января 2020

get_post_meta() второй параметр - значение мета-ключа. Так что вы должны использовать, например, $date_add_on = get_post_meta(get_the_id(), 'date_add_on')

0 голосов
/ 08 января 2020

Итак, я решил эту проблему. Когда вы добавляете настраиваемое поле в продукт WooCommerce или в пост WordPress, вы должны обновить его метаданные. Вот хорошее руководство по каждому шагу, который вы должны выполнить, чтобы добавить настраиваемое поле.

КАК ДОБАВИТЬ WOOCOMMERCE ТАМОЖЕННЫЕ ПОЛЯ В ПРОДУКТ *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...