Вывод ID товара и product_item_key в корзине
Как я могу вывести ID товара и product_item_key для каждого элемента корзины вместо общего количества?
function iconic_cart_count_fragments( $fragments ) {
$fragments['div.header-cart-count'] = '<div class="header-cart-count">' . WC()->cart->get_cart_contents_count() . '</div>';
return $fragments;
}
Спасибо
Techno Deviser, вероятно по ошибке, в цикле foreach установил значение для $fragments['div.header-cart-count'] вместо его добавления.
Попробуйте эту модификацию:
function iconic_cart_count_fragments( $fragments ) {
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$fragments['div.header-cart-count'] .= '<div class="header-cart-count">' .$cart_item_key.'<br><br>'. $cart_item['product_id']. '</div>';
}
return $fragments;
}
Или:
function iconic_cart_count_fragments( $fragments ) {
$cart = WC()->cart->get_cart();
if (!empty($cart)) {
foreach ( $cart as $cart_item_key => $cart_item )
$output .= $cart_item_key. ' - ' . $cart_item['product_id'] . '<br>';
$fragments['div.header-cart-count'] = '<div class="header-cart-count">' . $output . '</div>';
}
return $fragments;
}
@JyotiSharma Я проверил второй пример из кода выше. Если у меня в корзине 2 разных товара, и я нажимаю "добавить в корзину" на следующем, то div.header-cart-count индекс в JSON-ответе содержит 3 пары ключ/значение.
nmr
Попробуйте что-то вроде этого:
global $woocommerce;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $cart_item ) {
echo $cart_item_key;
echo $cart_item['product_id'];
}
ИЛИ
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
echo $cart_item_key;
echo $cart_item['product_id'];
}
ИЛИ
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$fragments['div.header-cart-count'] = '<div class="header-cart-count">' .$cart_item['product_id']. '</div>';
}
Это даст вам ID продуктов вместо вашего текущего вывода.
Финальное рабочее решение:
global $woocommerce;
add_filter( 'woocommerce_add_to_cart_fragments', 'iconic_cart_count_fragments', 10, 1 );
function iconic_cart_count_fragments( $fragments ) {
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$fragments['div.header-cart-count'] = '<div class="header-cart-count">' .$cart_item_key.'<br><br>'. $cart_item['product_id']. '</div>';
return $fragments;
}
}
Я уже пробовал так, но после этого фронтенд полностью становится пустым.
Jyoti Sharma
Код файла function.php add_filter( 'woocommerce_add_to_cart_fragments', 'iconic_cart_count_fragments', 10, 1 );
function iconic_cart_count_fragments( $fragments ) {
$fragments['div.header-cart-count'] = '<div class="header-cart-count">' . foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
echo $cart_item_key; echo $cart_item['product_id']; } . '</div>';
return $fragments;
}
Jyoti Sharma
какой правильный способ? моя цель — отображать каждый item_id и item_key корзины после срабатывания ajax добавления в корзину на странице категории/главной
Jyoti Sharma
Я просто даю ответ в соответствии с вашим вопросом, внутри вашей функции.
Techno Deviser
огромное спасибо, это работает именно так, как я хотел.
global $woocommerce; add_filter( 'woocommerce_add_to_cart_fragments', 'iconic_cart_count_fragments', 10, 1 );
function iconic_cart_count_fragments( $fragments ) { foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { $fragments['div.header-cart-count'] = '<div class="header-cart-count">' .$cart_item_key.'<br><br>'. $cart_item['product_id']. '</div>';
} return $fragments; }
Jyoti Sharma