Как сделать оформление заказа WooCommerce и wp через Contact Form 7?

Ссылка скопирована
1 ответ

Говоря другими словами мне нужно чтобы форма понимала, что у меня сейчас в корзине есть и отправляла это вместе с ФИО тд в вукомерс. Все сейчас реализовано на Contact Form 7 и купить в один клик, форма знает какой товар я хочу купить, но когда доходите в корзину она отправляет ток ФИО в укомерс, без товара и количества и тд, а ответьте как это реализовать, целый день голову ломаю

Дополнительно:

Никто не знает как у тебя "Все сейчас реализовано на Contact Form 7 и купить в один клик". CF7 вообще не имеет отношения к WC

  • Refguser,
    Суть в том что мне надо чтобы форма сама знала какие товары у меня сейчас в корзине, и чтобы это было без кода, все на элементоре
    Вот сила примера реализации по кнопке в товаре и в корзине одинаковые формы:
    https://ukr-trends.site/
  • Как сделать оформление заказа WooCommerce и wp через Contact Form 7?

    установите плагины
    WooCommerce , Contact Form 7, Contact Form 7 Dynamic Text Extension
    в WooCommerce измените код

    add_action('wpcf7_before_send_mail', 'custom_wpcf7_add_to_cart');  function custom_wpcf7_add_to_cart($form) {     // Получите данные из формы     $product_id = intval($_POST['your-product-id']); // Замените на имя поля для ID товара     $quantity = intval($_POST['your-product-quantity']); // Замените на имя поля для количества товара      // Проверьте, что товар существует в WooCommerce     if (wc_get_product($product_id)) {         // Добавьте товар в корзину         WC()->cart->add_to_cart($product_id, $quantity);     } }

    add_action('wpcf7_before_send_mail', 'custom_wpcf7_add_to_cart'); function custom_wpcf7_add_to_cart($form) { // Получите данные из формы $product_id = intval($_POST['your-product-id']); // Замените на имя поля для ID товара $quantity = intval($_POST['your-product-quantity']); // Замените на имя поля для количества товара // Проверьте, что товар существует в WooCommerce if (wc_get_product($product_id)) { // Добавьте товар в корзину WC()->cart->add_to_cart($product_id, $quantity); } }

    • Суть в том что мне надо чтобы форма сама знала какие товары у меня сейчас в корзине, и чтобы это было без кода, все на элементоре
      Вот сила примера реализации по кнопке в товаре и в корзине одинаковые формы:
      https://ukr-trends.site/
    • Bogdan Bukievskiy, тогда с помощью JS подтяните ID продуктов в форму. А перед отправкой создайте заказ с его ФИО.
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Редакция DevOps Ответ

    Contact Form 7 сам по себе не оформляет заказ WooCommerce. Он может отправить письмо или принять данные формы, но не знает, что лежит в корзине, какие товары выбраны, какие вариации, цены, доставка и налоги. Если нужно создать именно заказ WooCommerce, нужно либо пользоваться стандартным checkout, либо программно создать заказ через API WooCommerce.

    Если цель простая: форма “купить в один клик” должна отправлять товар, ФИО и телефон менеджеру, то можно не создавать заказ, а просто подставить данные товара в письмо CF7. Но если заказ должен появиться в WooCommerce, списываться остатки, работать статусы и письма, нужен код или готовый плагин one click checkout.

    Пример общей логики через хук CF7:

    add_action('wpcf7_mail_sent', function ($contact_form) {
        $submission = WPCF7_Submission::get_instance();
        if (!$submission) {
            return;
        }
     
        $data = $submission->get_posted_data();
        $product_id = absint($data['product_id'] ?? 0);
     
        if (!$product_id || !function_exists('wc_create_order')) {
            return;
        }
     
        $order = wc_create_order();
        $order->add_product(wc_get_product($product_id), 1);
        $order->set_billing_first_name(sanitize_text_field($data['your-name'] ?? ''));
        $order->set_billing_phone(sanitize_text_field($data['your-phone'] ?? ''));
        $order->calculate_totals();
        $order->update_status('pending');
    });

    add_action('wpcf7_mail_sent', function ($contact_form) { $submission = WPCF7_Submission::get_instance(); if (!$submission) { return; } $data = $submission->get_posted_data(); $product_id = absint($data['product_id'] ?? 0); if (!$product_id || !function_exists('wc_create_order')) { return; } $order = wc_create_order(); $order->add_product(wc_get_product($product_id), 1); $order->set_billing_first_name(sanitize_text_field($data['your-name'] ?? '')); $order->set_billing_phone(sanitize_text_field($data['your-phone'] ?? '')); $order->calculate_totals(); $order->update_status('pending'); });

    Но это только каркас. В реальном магазине нужно учесть количество, вариации, цену, доставку, согласия, защиту от спама и ошибки. В Elementor без кода это обычно решается плагинами “buy one click” для WooCommerce, а не чистым CF7. CF7 можно оставить как форму заявки, но полноценную корзину и заказ лучше отдавать WooCommerce.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно