По умолчанию woocommerce вы можете добавить один продукт за раз через URL: ... корзина /? add-to-cart = 12
По умолчанию, не меняя ничего в WOcommerce, вы не сможете с помощью кнопки добавить все эти продукты сразу, вам нужно будет изменить код по умолчанию.
Простым решением было бы создать плагин WordPress, который добавляет эту функциональность принятия добавления нескольких продуктов через URL, и клиент просто добавляет этот плагин WordPress, и он будет работать.
Я советую вам создать локальныйсреда для тестирования перед производством.
Ссылка на документацию: https://developer.wordpress.org/plugins/plugin-basics/
Вот пример кода, вам нужно будет создать папку внутри папки плагинов и дать ей пример имени: my_plugin firstи внутри него файл my_plugin.php
Внутри этого файла вы добавляете следующий код:
<?php
/**
* Plugin Name: YOUR PLUGIN NAME
*/
function woocommerce_maybe_add_multiple_products_to_cart() {
// Make sure WC is installed, and add-to-cart qauery arg exists, and contains at least one comma.
if ( ! class_exists( 'WC_Form_Handler' ) || empty( $_REQUEST['add-to-cart'] ) || false === strpos( $_REQUEST['add-to-cart'], ',' ) ) {
return;
}
// Remove WooCommerce's hook, as it's useless (doesn't handle multiple products).
remove_action( 'wp_loaded', array( 'WC_Form_Handler', 'add_to_cart_action' ), 20 );
$product_ids = explode( ',', $_REQUEST['add-to-cart'] );
$count = count( $product_ids );
$number = 0;
foreach ( $product_ids as $product_id ) {
if ( ++$number === $count ) {
// Ok, final item, let's send it back to woocommerce's add_to_cart_action method for handling.
$_REQUEST['add-to-cart'] = $product_id;
return WC_Form_Handler::add_to_cart_action();
}
$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $product_id ) );
$was_added_to_cart = false;
$adding_to_cart = wc_get_product( $product_id );
if ( ! $adding_to_cart ) {
continue;
}
$add_to_cart_handler = apply_filters( 'woocommerce_add_to_cart_handler', $adding_to_cart->product_type, $adding_to_cart );
/*
* Sorry.. if you want non-simple products, you're on your own.
*
* Related: WooCommerce has set the following methods as private:
* WC_Form_Handler::add_to_cart_handler_variable(),
* WC_Form_Handler::add_to_cart_handler_grouped(),
* WC_Form_Handler::add_to_cart_handler_simple()
*
* Why you gotta be like that WooCommerce?
*/
if ( 'simple' !== $add_to_cart_handler ) {
continue;
}
// For now, quantity applies to all products.. This could be changed easily enough, but I didn't need this feature.
$quantity = empty( $_REQUEST['quantity'] ) ? 1 : wc_stock_amount( $_REQUEST['quantity'] );
$passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity );
if ( $passed_validation && false !== WC()->cart->add_to_cart( $product_id, $quantity ) ) {
wc_add_to_cart_message( array( $product_id => $quantity ), true );
}
}
}
// Fire before the WC_Form_Handler::add_to_cart_action callback.
add_action( 'wp_loaded', 'woocommerce_maybe_add_multiple_products_to_cart', 15 );
Одна важная вещь, этот код - всего лишь пример, и вы можете добавлять продукты изURL вот так: http://shop.com/shop/cart/?add-to-cart=3001,3282
просто передавая идентификаторы продуктов, которые вы хотите обновить.
Этот код изменяет woocommerce и, следовательно, всеБлагодаря различным продуктам по URL, не был разработан мной, я взял это в качестве примера по ссылке ниже: Добавление нескольких товаров в корзину WooCommerce одновременно
В этой ссылке вы увидите несколько предложений,То, что я сделал, это просто дал свет, который может помочь решить вашу проблему. Разработка плагина, который не изменит исходный код клиентского сайта, является наилучшим вариантом, и если что-то пойдет не так или не получится, просто отключите все обратно в нормальное состояние;) Надеюсь, я каким-то образом помог.