Показать текст, если товар существует в корзине

Редактирование находится в ThemeName/WooCommerce/cart/cart.php, строка 149.

Дополнительный текст будет отображаться над полем «Код купона», если указанный товар находится в корзине. Этот текст предназначен для информирования клиента о том, что он имеет право на получение купона (снижение цены), если условие выполнено.

Что я пробовал:

<p>
  <?php
    $product_id = $cart_item['variation_id'] > 0 ? $cart_item['variation_id'] : 
             $cart_item['product_id'];

    if ($product_id == "15502" || $product_id == "15566" || $product_id == "15567" || 
        $product_id == "18946" || $product_id == "18947" || $product_id == "18948" || 
        $product_id == "16199")
      echo 'You may use the coupon "x" for your free complimentary greeting card!';
  ?>
</p>

Там есть пустой абзац, где должен отображаться текст, но код не работает должным образом.

Что я ожидал: Определите product_id в корзине. ЕСЛИ продукт существует в корзине, тогда отобразите текст.

В строке № 146 переменная $cart_item недоступна, когда вы выполняете foreach WC()->cart->get_cart(), вы получаете $cart_item, так что в основном вам придется выполнять foreach из каждого элемента корзины, чтобы получить идентификатор продукта и сопоставить продукт с идентификаторами ваших продуктов, а затем установить true / ложный флаг в переменной, затем вне foreach проверьте значение флага, если оно истинно, затем напечатайте свое сообщение.

Vijay Hardaha 28.11.2022 06:18

Спасибо за ваш ответ. Основываясь на ваших добрых отзывах, я попробовал это: foreach(WC()->cart->get_cart() as $cart_item){ $product_id = $cart_item['data']; } $x = array("15502", "15566", "15567", "18946", "18947", "18948", "16199"); if ($product_id == $x){ echo 'Insert text here';} Ошибок нет, но выводит не так, как я ожидал. Не могли бы вы направить меня дальше?

TurnItOffAndOnAgain 29.11.2022 09:22

1: $cart_item['data'] даст вашему продукту объект, а не идентификатор. для идентификатора вам нужно использовать $cart_item['product_id'] 2. Вы не можете сравнивать целое число с массивом, используя $product_id == $x, вам придется использовать in_array( $product_id, $x, true )

Vijay Hardaha 29.11.2022 09:24

Большое спасибо за вашу помощь и терпение. Код действительно работает после того, как я отредактировал его по вашему совету. Однако код не обнаруживает product_id, когда он автоматически добавляется в корзину. Мой сайт использует E&P Form Builder, чтобы клиенты могли создавать свои собственные подарочные наборы. В конце процесса их корзина будет соответственно заполнена. Код работает, если я добавил конкретный product_id в корзину вручную. Текст показывает. Есть идеи, почему это происходит, Виджай?

TurnItOffAndOnAgain 30.11.2022 02:26
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
126
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
<p>
  <?php
  //Check items in cart
  foreach(WC()->cart->get_cart() as $cart_item){
    $product_id = $cart_item['product_id'];
}

  $x = array(15502, 15566, 15567, 18946, 18947, 18948);

  //If this is true, then
  if (in_array($product_id, $x, true)){
    echo 'Insert text here.';
} 
  ?>
</p>

Для более функционального и автоматизированного решения, пожалуйста, прочитайте: Автоматическое применение или удаление купона в корзине Woocommerce для определенного идентификатора продукта

Другие вопросы по теме