2017-03-16 5 views
0

WordPress의 WooCommerce 장바구니 페이지에서 제품 표를 재정렬하려고합니다. 현재 목록에 나열된 제품은 가장 오래된 것부터 가장 최신의 것으로 (장바구니에 추가하는 순서대로) 가장 최근에 추가 된 항목과 맨 아래에 가장 오래된 항목이 표시되도록하려면 반대쪽 항목을 갖고 싶습니다. cart_url를 호출 할 때WooCommerce에서 장바구니 순서 변경

do_action('woocommerce_before_cart'); ?> 

<div class="cart_container"> 

<form class="cart-form" action="<?php echo esc_url(WC()->cart->get_cart_url()); ?>" method="post"> 

<?php do_action('woocommerce_before_cart_table'); ?> 

orderby를 추가 할 수 있을까요?

답변

1

어떤 종류의 카트를 주문 하시려면 woocommerce_cart_loaded_from_session 후크를 사용해야합니다. 반대로 주문은 PHP array_reverse 기능을 사용하기 만하면됩니다.

add_action('woocommerce_cart_loaded_from_session', 'wh_cartOrderItemsbyNewest'); 

function wh_cartOrderItemsbyNewest() { 

    //if the cart is empty do nothing 
    if (WC()->cart->get_cart_contents_count() == 0) { 
     return; 
    } 

    //array to collect cart items 
    $cart_sort = []; 

    //add cart item inside the array 
    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) { 
     $cart_sort[$cart_item_key] = WC()->cart->cart_contents[$cart_item_key]; 
    } 

    //replace the cart contents with in the reverse order 
    WC()->cart->cart_contents = array_reverse($cart_sort); 
} 

코드 활성 자식 테마 (또는 테마)의 function.php 파일에 간다 : 여기

는 코드입니다. 또는 모든 플러그인 PHP 파일에서.

코드가 테스트되고 작동합니다.

희망이 있습니다.

+0

완벽하게, 내가 뭘 찾고 있었는지, 고마워! 내 미니 카트에 대해 동일한 주문을 반환하는 방법에 대한 아이디어가 있습니까? – Kelly

+0

@Kelly : 나는 미니 카트에 정통하지는 않지만, 곧 그 해결책을 찾으려고 노력할 것입니다. –

0

woocommerce 플러그인의 cart/cart.php 템플릿 파일을 수정할 수 있습니다. 장바구니 페이지에서 루프가 "WC() -> cart-> get_cart()"로 시작하면 먼저이 배열을 별도의 배열로 가져와 역순으로 배열 한 다음 역순으로 카트 제품을 표시 할 수 있습니다.

이 옵션은 실제로는 woocommerce 객체와 상호 작용하지 않으므로 더 적은 처리가 필요하기 때문에 제안됩니다. 넌 그냥 거꾸로 보여줄 뿐이야.

관련 문제