Загрузка...

Создание заказа в Woo

Тема в разделе Backend создана пользователем Kamazaz 11 сен 2023. 148 просмотров

Загрузка...
  1. Kamazaz
    Kamazaz Автор темы 11 сен 2023 0 5 авг 2023
    Ребята, помогите! Я уже почти в отчаянии. Впервый подгоняю сайт под woo и нужно сделать создание заказа. Это должно происходить не со страницы чекаут и поэтому код тоже пишу свой.
    Я, естественно, перед тем, как создавать полноценный код, чтобы это всё работало с кнопки решил сделать макет того, как создаю заказ, взял фул готовый код с сайта чела, у которого много всего по woo и wp:


    do_action('true_create_order');

    function true_create_order() {

    // Начинаем с того, что создаём заказ, вполне логично
    $order = wc_create_order();
    // Теперь давайте разберёмся с платёжным/адресом доставки покупателя
    $address = array(
    'first_name' => 'Миша',
    'last_name' => 'Рудрастых',
    'company' => 'Студия Миши Рудрастых',
    'email' => 'no-reply@misha.agency',
    'phone' => '123-123-123',
    'address_1' => 'Большой пр. ПС',
    'address_2' => '100',
    'city' => 'Санкт-Петербург',
    'state' => 'Санкт-Петербург',
    'postcode' => '191033',
    'country' => 'RU'
    );
    // Теперь можем задать этот адрес как платёжный
    $order->set_address( $address, 'billing' );
    // И как адрес доставки
    $order->set_address( $address, 'shipping' );
    // Неплохо бы добавить пару товаров в заказ
    $product_id = 27; // Допустим ID товара 37
    $product_qty = 1; // 1 единица товара будет норм
    $order->add_product( wc_get_product( $product_id ), $product_qty );
    // Установим платёжный метод, например пусть это будет оплата наличными при получении
    $payment_gateways = WC()->payment_gateways->payment_gateways();
    if( ! empty( $payment_gateways[ 'cod' ] ) ) {
    $order->set_payment_method( $payment_gateways[ 'cod' ] );
    }
    // Добавляем доставку
    $item = new WC_Order_Item_Shipping();
    $item->set_method_title( "Доставочка" ); // название
    $item->set_method_id( "flat_rate:14" ); // указываем ID существующего способа доставки
    $item->set_total( 5 ); // стоимость доставки (необязательно)
    $order->add_item( $item );
    // Пересчитываем заказ
    $order->calculate_totals();
    // Устанавливаем нужный нам статус
    // $order->set_status( 'completed' );
    // $order->save();
    //$order->update_status( 'completed' );
    // Можно добавить заметку в заказ
    $order->add_order_note( 'Заказ создан динамически.' );
    }


    И этот код не работает. Если разкомментировать update_status, то код просто выбивает ошибка а так просто ничего не происходит.

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

    Я перечитал уже тонну форумов и подобного, но адекватного объяснения не нашёл. Пытался создавать woocommerce.php и там всё прописывать, в functions.php, без толку. Нашёл, что нужно скопировать директорию woo в тему и переименовать её, но эффекта тоже 0. Даже в **** опенсервера лазил

    Может кто знает, в чём может быть проблема? Заранее спасибо
     
  2. f0min
    красава, авторку епта!
     
  3. Kamazaz
    Kamazaz Автор темы 11 сен 2023 0 5 авг 2023
    Забыл написать кстати
    Как только включаю стандартную тему по типу 2021 то всё начинает работать. И какбы я понимаю, что я скорее всего какой-то обязательный кусок кода для Woo не прописал просто, но какой...
    Да, сам по себе ву подключил
     
    11 сен 2023 Изменено
Top