Измените кнопку «Добавить в корзину», чтобы вместо этого добавить бесплатный образец продукта.Php

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

Сообщение Anonymous »

Я работаю над магазином WooCommerce, где предлагаю бесплатные образцы товаров. Вот чего я пытаюсь достичь:
Поведение кнопки: я переименовал кнопку «Добавить в корзину» по умолчанию в «Бесплатный образец».
Цель:

Когда покупатель нажимает кнопку «Бесплатный образец», я хочу, чтобы он добавил в корзину другой продукт (соответствующий бесплатный образец продукта) вместо обычный продукт.
Бесплатный образец продукта: бесплатный образец — это отдельный продукт, цена которого составляет 0 фунтов стерлингов.
Настройка:

Я уже переименовал кнопку «Добавить в корзину» в «Бесплатный образец» как на страницах магазина, так и на страницах товаров, и мне нравится, как она выглядит и позиционируется.
Каждому обычному товару соответствует соответствующий бесплатный образец. продукт, который настроен как отдельный продукт в WooCommerce и стоит 0 фунтов стерлингов.
Код, который я пробовал: (infunctions. php)

Я добавил следующий код в свой файл function.php для управления функциональностью кнопок и сменой идентификаторов продуктов.

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

// Modify the Add to Cart button text to 'Free Sample'
add_filter('woocommerce_product_single_add_to_cart_text', 'change_add_to_cart_button_text');
add_filter('woocommerce_product_add_to_cart_text', 'change_add_to_cart_button_text');

function change_add_to_cart_button_text() {
return __('Free Sample', 'woocommerce'); // Button says 'Free Sample'
}

// Ensure the correct free sample product is added to cart when the Free Sample button is clicked
add_filter('woocommerce_add_cart_item_data', 'add_free_sample_to_cart', 10, 3);
function add_free_sample_to_cart($cart_item_data, $product_id, $variation_id) {
if (isset($_POST['is_free_sample']) && $_POST['is_free_sample'] === 'true') {
// Get the corresponding free sample product ID from the array
$free_sample_id = get_free_sample_product_id($product_id);

if ($free_sample_id) {
$cart_item_data['product_id'] = $free_sample_id; // Replace the product ID with the free sample product ID
}
}

return $cart_item_data;
}

// Mapping of original products to free sample product IDs
function get_free_sample_product_id($product_id) {
$free_samples = array(
350 => 2658, // Original Product => Free Sample Product
353 => 2657,
362 => 2656,
368 => 2653,
371 => 2652,
// More mappings...
);

return isset($free_samples[$product_id]) ? $free_samples[$product_id] : false;
}
Проблема:

Даже после реализации вышеуказанного решения:
Нажатие кнопки " Кнопка «Бесплатный образец» по-прежнему добавляет в корзину оригинальный продукт (по обычной цене), а не бесплатный образец продукта по цене 0 фунтов стерлингов.
Ошибок консоли нет, и кнопка выглядит и функционирует нормально с точки зрения своего положения и стиля.
Я пробовал несколько подходов, включая переопределение поведения добавления в корзину, но, похоже, ничего не работает должным образом. Я хочу, чтобы кнопка плавно добавляла бесплатный образец продукта на основе сопоставления вместо основного продукта.
Что я ищу:

Как правильно заменить добавляемый в корзину товар на его бесплатный образец-аналог?
Уместен ли мой нынешний подход?
Дополнительный контекст:

Я использую тему WoodMart, но основные функции WooCommerce все равно должны применяться. На кнопке уже есть правильный ярлык «Бесплатный образец», и мне просто нужно убедиться, что соответствующий бесплатный образец товара добавлен в корзину.

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

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

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

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

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

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

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