Уже сам зациклился с этим аякс-циклом... может кто то свежим глазом глянет и скажет где я накосячил? Please!
В глобальную переменную ($woocommerce) из страницы закидываются данные для "корзины покупок". Мне нужно эти данные выдернуть в цикле и вывести на этой же странице без перезагрузки страницы.
Вот код скрипта:
// Ensure cart contents update when products are added to the cart via AJAX
add_filter('add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment');
function woocommerce_header_add_to_cart_fragment( $fragments ) {
global $woocommerce;
ob_start();
?>
<b class="cart-contents"><?php echo sprintf(_n('%d item', '%d items', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count);?> - <?php echo $woocommerce->cart->get_cart_total(); ?></b>
<?php
foreach ($woocommerce->cart->cart_contents as $cart_item_key => $cart_item) :
$i++;
if ( $i == 1 ) :
$rowclass = ' class="cart_oddrow"';
else :
$rowclass = ' class="cart_evenrow"';
$i = 0;
endif;
$_product = $cart_item['data'];
if ($_product->exists() && $cart_item['quantity']>0) :
echo '<li'.$rowclass.'>';
echo '<div class="dropdowncartproduct">';
echo '<a href="'.get_permalink($cart_item['product_id']).'">';
echo apply_filters('woocommerce_cart_widget_product_title', $_product->get_title(), $_product).'</a>';
if ($_product instanceof woocommerce_product_variation && is_array($cart_item['variation'])) :
echo woocommerce_get_formatted_variation( $cart_item['variation'] );
endif;
echo '</a>';
echo '</div>';
echo '<div class="dropdowncartquantity">';
echo '<span class="quantity">' .$cart_item['quantity'].' × '.woocommerce_price($_product->get_price()).'</span>';
echo '</div>';
echo '<div class="clear"></div>';
echo '</li>';
endif;
endforeach;
$fragments['.cart-contents'] = ob_get_clean();
return $fragments;
}
Косяк в том что новый цикл выводится на странице вместе с предыдущим циклом. Каждый новый цикл добавляется к предыдущему, а не заменяет его.
Я понимаю что тут где то элементарная ошибка, но видимо глаз уже замылился и я топчусь уже пару дней на одном месте.
Подскажите где ошибка?
Вот то что лежит на странице:
<div class="span3">
<b class="cart-contents"><?php echo sprintf(_n('%d item', '%d items', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count);?> - <?php echo $woocommerce->cart->get_cart_total(); ?></b>
<?php
foreach ($woocommerce->cart->cart_contents as $cart_item_key => $cart_item) :
$i++;
if ( $i == 1 ) :
$rowclass = ' class="cart_oddrow"';
else :
$rowclass = ' class="cart_evenrow"';
$i = 0;
endif;
$_product = $cart_item['data'];
if ($_product->exists() && $cart_item['quantity']>0) :
echo '<li'.$rowclass.'>';
echo '<div class="dropdowncartproduct">';
echo '<a class="cart-contents" href="'.get_permalink($cart_item['product_id']).'">';
echo apply_filters('woocommerce_cart_widget_product_title', $_product->get_title(), $_product).'</a>';
if ($_product instanceof woocommerce_product_variation && is_array($cart_item['variation'])) :
echo woocommerce_get_formatted_variation( $cart_item['variation'] );
endif;
echo '</a>';
echo '</div>';
echo '<div class="dropdowncartquantity">';
echo '<span class="quantity">' .$cart_item['quantity'].' × '.woocommerce_price($_product->get_price()).'</span>';
echo '</div>';
echo '<div class="clear"></div>';
echo '</li>';
endif;
endforeach;
?>
</div>