Я пытаюсь создать собственный код купона в WooCommerce с помощью PHP, который существенно снижает цену каждого товара в корзине с тегом «main» до 10. Он делает это путем подсчета количества товаров в корзине, помеченных тегом «main». ', затем вычисляет общую стоимость каждого из них, и исходя из этого рассчитывает требуемую скидку в переменной $ Discount. См. Код ниже:
$tag_name = 'main';
$tag_count = 0;
foreach(WC()->cart->get_cart() as $cart_item) {
if( has_term( $tag_name, 'product_tag', $cart_item['product_id'])){
$tag_count += $cart_item['quantity'];
$price = $cart_item['data']->get_price();
$float_value_price += floatval($price);
}
}
$discount = $float_value_price - (10*$tag_count);
$discount_string = number_format($discount, 2);
$coupon_code = 'testing'; // Code
$amount = $discount_string; // Amount
$discount_type = 'fixed_cart'; // Type: fixed_cart, percent, fixed_product, percent_product
$coupon = array(
'post_title' => $coupon_code,
'post_content' => '',
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'shop_coupon');
$new_coupon_id = wp_insert_post( $coupon );
// Add meta
update_post_meta( $new_coupon_id, 'discount_type', $discount_type );
update_post_meta( $new_coupon_id, 'coupon_amount', $amount );
update_post_meta( $new_coupon_id, 'individual_use', 'no' );
update_post_meta( $new_coupon_id, 'product_ids', '' );
update_post_meta( $new_coupon_id, 'exclude_product_ids', '' );
update_post_meta( $new_coupon_id, 'usage_limit', '' );
update_post_meta( $new_coupon_id, 'expiry_date', '' );
update_post_meta( $new_coupon_id, 'apply_before_tax', 'yes' );
update_post_meta( $new_coupon_id, 'free_shipping', 'no' );
Когда я пытаюсь активировать этот код, я получаю следующее сообщение об ошибке:
Фрагмент кода, который вы пытаетесь сохранить, произвел фатальную ошибку в строке 4:
Неперехваченная ошибка: вызов функции-члена get_cart () с нулевым значением в /homepages/9/d392621230/htdocs/clickandbuilds/WOOCOMMERCEExperiment/wp-content/plugins/code-snippets/php/admin-menus/class-edit-menu.php (213): eval () 'd код: 4 Трассировка стека: # 0 / homepages / 9 / d392621230 / htdocs / clickandbuilds / WOOCOMMERCEExperiment / wp-content / plugins / code-snippets / php / admin-menus / class-edit- menu.php (213): eval () # 1 /homepages/9/d392621230/htdocs/clickandbuilds/WOOCOMMERCEExperiment/wp-content/plugins/code-snippets/php/admin-menus/class-edit-menu.php(263 ): Code_Snippets_Edit_Menu-> test_code (Object (Code_Snippet)) # 2 /homepages/9/d392621230/htdocs/clickandbuilds/WOOCOMMERCEExperiment/wp-content/plugins/code-snippets/phpmen/admin- (122): Code_Snippets_Edit_Menu-> save_posted_snippet () # 3 /homepages/9/d392621230/htdocs/clickandbuilds/WOOCOMMERCEExperiment/wp-content/plugins/code-snippets/phpmen/admin-edmin-edmin ): Code_Snippets_Edit_Menu-> process_actions () # 4 / homepages / 9 / d392621230 / htdocs / clickandbuilds / W
Я давно смотрю на это и не могу найти решения. Буду признателен, если кто нибудь сможет это решить. Спасибо.
WC()->cart
… Не забывайте, что корзина - это живой объект, который зарегистрирован на Сессия WC и привязана к куку в браузере клиента (на стороне клиента). - person LoicTheAztec   schedule 06.06.2020