Добавьте конкретный товар в корзину вместе с основным товаром в WooCommerce.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Добавьте конкретный товар в корзину вместе с основным товаром в WooCommerce.

Сообщение Anonymous »

Я пытаюсь сделать что-то похожее на «дополнения к продукту», но вручную. У меня было бы несколько простых продуктов, которые должны были бы быть компаньонами. Их идентификаторы будут одинаковыми. Я хочу сделать их флажками с фотографией, именем и ценой. Если флажок установлен - товар необходимо добавить в корзину вместе с главной на странице товара. Это код, уже доработанный gpt

Код: Выделить всё

// Function to display checkboxes for additional products
function display_additional_products_checkboxes() {
$additional_products_ids = array(220, 222, 224, 226); // Replace with your product IDs

echo '';
echo 'Additional Products';

foreach ($additional_products_ids as $product_id) {
$additional_product = wc_get_product($product_id);
if ($additional_product) {
$product_name = $additional_product->get_name();
$product_price = $additional_product->get_price_html();
$product_id_sanitized = sanitize_title($additional_product->get_slug());

echo '';
echo '';
echo '';
echo $product_name . ' - ' .  $product_price;
echo '';
echo '';
}
}

echo '';
}
add_action('woocommerce_before_add_to_cart_button', 'display_additional_products_checkboxes');

// Function to process additional products checkboxes
function add_additional_products_to_cart($cart_item_data, $product_id, $variation_id) {
if (isset($_POST['additional_products']) && !empty($_POST['additional_products'])) {
$additional_products = wc_clean(wp_unslash($_POST['additional_products']));
$cart_item_data['additional_products'] = $additional_products;
}
return $cart_item_data;
}
add_filter('woocommerce_add_cart_item_data', 'add_additional_products_to_cart', 10, 3);

// Function to display additional products in cart
function display_additional_products_in_cart($item_data, $cart_item) {
if (isset($cart_item['additional_products']) && !empty($cart_item['additional_products'])) {
$additional_products = $cart_item['additional_products'];
$additional_products_names = array();

foreach ($additional_products as $product_id) {
$product = wc_get_product($product_id);
if ($product) {
$additional_products_names[] = $product->get_name();
} else {
error_log("Failed to get additional product with ID: $product_id");
}
}

$item_data[] = array(
'key'   => __('Additional Products', 'woocommerce'),
'value' => implode(', ', $additional_products_names),
);
}

return $item_data;
}
add_filter('woocommerce_get_item_data', 'display_additional_products_in_cart', 10, 2);

// Function to add additional products to order
function add_additional_products_to_order($item, $cart_item_key, $values, $order) {
if (isset($values['additional_products']) && !empty($values['additional_products'])) {
$additional_products = $values['additional_products'];

foreach ($additional_products as $product_id) {
$product = wc_get_product($product_id);
if ($product) {
$item->add_meta_data(__('Additional Product', 'woocommerce'), $product->get_name());
} else {
error_log("Failed to get additional product with ID: $product_id");
}
}
}
}
add_action('woocommerce_checkout_create_order_line_item', 'add_additional_products_to_order', 10, 4);

// Function to add additional products as separate line items in the cart
function add_additional_products_as_separate_items($cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data) {
if (isset($cart_item_data['additional_products']) && !empty($cart_item_data['additional_products'])) {
if (!isset(WC()->session->additional_products_added)) {
WC()->session->set('additional_products_added', array());
}
$processed = WC()->session->get('additional_products_added');

$additional_products = $cart_item_data['additional_products'];

foreach ($additional_products as $additional_product_id) {
if (!in_array($additional_product_id, $processed)) {
$additional_product = wc_get_product($additional_product_id);
if ($additional_product) {
error_log("Adding additional product to cart: " .  $additional_product->get_name());
WC()->cart->add_to_cart($additional_product_id);
$processed[] = $additional_product_id;  // Mark this additional product as processed
} else {
error_log("Failed to add additional product with ID: $additional_product_id");
}
}
}

WC()->session->set('additional_products_added', $processed);
}
}
add_action('woocommerce_add_to_cart', 'add_additional_products_as_separate_items', 10, 6);

// Clear session data after checkout
function clear_additional_products_session() {
if (isset(WC()->session->additional_products_added)) {
WC()->session->__unset('additional_products_added');
}
}
add_action('woocommerce_checkout_order_processed', 'clear_additional_products_session');
Но у меня все еще есть та же проблема, и gpt не может помочь — она возникает снова и снова.
Журнал показывает что-то вроде

Код: Выделить всё

[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
[25-Jun-2024 04:21:09 UTC] Adding additional product to cart: Present One
Как бесконечный цикл. Gpt пытался помочь с моментом сеанса, но это не помогло. Может быть, кто-нибудь из людей лучше знает, где я ошибаюсь?

Подробнее здесь: https://stackoverflow.com/questions/786 ... oocommerce
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»