Редактирование находится в 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
в корзине. ЕСЛИ продукт существует в корзине, тогда отобразите текст.
Спасибо за ваш ответ. Основываясь на ваших добрых отзывах, я попробовал это: 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';}
Ошибок нет, но выводит не так, как я ожидал. Не могли бы вы направить меня дальше?
1: $cart_item['data']
даст вашему продукту объект, а не идентификатор. для идентификатора вам нужно использовать $cart_item['product_id']
2. Вы не можете сравнивать целое число с массивом, используя $product_id == $x
, вам придется использовать in_array( $product_id, $x, true )
Большое спасибо за вашу помощь и терпение. Код действительно работает после того, как я отредактировал его по вашему совету. Однако код не обнаруживает product_id
, когда он автоматически добавляется в корзину. Мой сайт использует E&P Form Builder, чтобы клиенты могли создавать свои собственные подарочные наборы. В конце процесса их корзина будет соответственно заполнена. Код работает, если я добавил конкретный product_id
в корзину вручную. Текст показывает. Есть идеи, почему это происходит, Виджай?
<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 для определенного идентификатора продукта
В строке № 146 переменная
$cart_item
недоступна, когда вы выполняете foreachWC()->cart->get_cart()
, вы получаете$cart_item
, так что в основном вам придется выполнять foreach из каждого элемента корзины, чтобы получить идентификатор продукта и сопоставить продукт с идентификаторами ваших продуктов, а затем установить true / ложный флаг в переменной, затем вне foreach проверьте значение флага, если оно истинно, затем напечатайте свое сообщение.