2017-12-05 3 views
0

내 고객은 자신의 제품 (약 600)을 현재 역순으로 (최신순, 최장순) 표시하는 WooCommerce 온라인 스토어를 운영합니다.WooCommerce 제품 루프에 맞춤 정렬을 적용하는 방법

문제는 오래된 제품은 항상 페이지의 맨 아래에 있고 고객이 (매우 긴 600 개 제품!) 페이지의 맨 아래로 스크롤하는 경우가 거의 없기 때문입니다.

불행히도 클라이언트는 제품을 범주 나 별도의 페이지로 나눌 준비가되어 있지 않습니다. 그는 또한 상점 페이지가 표시 될 때마다 해고되는 임의의 제품 분류에 반대합니다.

그는 그러나 동의 한 다음

항상
  1. 가 (이 '_product_new'는 post_meta를 사용하여 우리가 이미 표시) 페이지 상단에 최신 제품을 표시;
  2. 두 블록 (가장 오래된 50 %와 최신 50 %)으로 나누고이 블록을 현재 달에 따라 번갈아 표시합니다. 심지어 가장 오래된 50 % 블록 먼저, 처음 몇 개월은 가장 최근 50 % 블록을 먼저 표시합니다.

중요 post_meta 표시된 제품은 항상 페이지 상단에 있습니다.

나는 그것을 정렬 'pre_get_post'후크를 사용하여 사용자 정의 제품에 적용 할 수 있어야한다고 생각합니다 :

add_action('pre_get_posts', 'custom_vtp_shop_order'); 

function custom_vtp_shop_order($q){ 
    if (! $q->is_main_query()) return; 
    if (! is_admin() && (is_shop() || is_archive)) { 

     ...do the magic here... 

    } 

    remove_action('pre_get_posts', 'custom_vtp_shop_order'); 
} 

을하지만 난 방법을 잘 모르겠어요.

내가 일해야 할 것입니다 :

  1. 블록 1 : post_meta '_product_new'모든 제품을 얻을;

  2. 블록 2 : 다른 모든 제품을 가져 와서 역순으로 정렬하십시오 (최신순, 최장순).

  3. 블록 3과 블록 4를 만드는 중간에 블록 2를 나누십시오.

4a. 짝수 월 (2 월, 4 월, 6 월 등)에 제 제품을 1 번 블록, 3 번 블록, 4 번 블록으로 주문하십시오;

4b. 이상한 달 (1 월, 3 월, 5 월 등)에 제 1 블록, 블록 4, 블록 3으로 제품을 주문하십시오.

미리 도움을 청하십시오!

답변

0

WP_Query를 사용하여 세 가지 별도의 쿼리가 필요합니다.

1st - products, filtered by '_product_new', sorted newest to oldest 
2nd - products, sorted newest to oldest, limit to half of posts 
3rd - products, sorted oldest to newest, limit to half of posts. 

아마도 archive-product.php를 다시 작성해야합니다. 나는 이것이 가장 쉬운 방법이라고 생각한다. 이 코드는 꽤 광범위 할 것이지만, 당신이 이것을 올바르게 할 수있는 다른 방법을 생각할 수는 없습니다.

관련 문제