안녕하세요!
계속 혼자 코드를 붙잡다가 결국 질문을 드리게 되었습니다.
메뉴에서 상품리스트(연결페이지 item)를 클릭할 때, 보통 최근등록순으로 정렬이 되더라구요.
그걸 '판매많은순'으로 정렬되도록 하고 싶은데, 코드를 고쳐도 변경이 없습니다.
우선 gnucommerce/shop/item_list.php에서
$it_args = array( 'skin_dir' => $skin_dir, 'item_list' => apply_filters('gc_main_item_obj', $item_list), 'orderby' => isset($_GET['orderby']) ? sanitize_text_field($_GET['orderby']) : 'post_date',);//'post_date'를 'it_sum_qty'로 변경do_action('gc_ca_include_head', $it_args);//상품 정렬 관련 htmlif( gc_is_product_page($wp_query) || $wp_query->found_posts > 1 ){ gc_skin_load('item_list_head.skin.php', $it_args);}
를 참조해서 중간 주석처럼 post_date를 it_sum_qty로 변경하려고 했습니다.
일단은 그누커머스 플러그인이 업데이트 될 때를 대비해서 gc_customize라는 별도 플러그인을 만들었고,
function gc_itemlist_orderby(){ $it_args = array( 'skin_dir' => $skin_dir, 'item_list' => apply_filters('gc_main_item_obj', $item_list), 'orderby' => isset($_GET['orderby']) ? sanitize_text_field($_GET['orderby']) : 'it_sum_qty',);} add_action('gc_item_post_view', 'gc_itemlist_orderby');//gc_item_post_view 대신에 여러가지 태그를 시도해봤는데도 적용이 안 되었습니다ㅜ
혹은
function gc_itemlist_orderby($it_args){ echo $it_args['orderby'] = 'it_sum_qty';}add_action('gc_item_post_view', 'gc_itemlist_orderby');
로 작성했는데,
안 되어서 직접 gnucommerce/shop/item_list.php의 코드를 변경(그냥 'post_date'를 'it_sum_qty'로 수정)해봤는데도 적용이 안 되더라구요.
하다하다 어떤 것이 문제인지 전혀 감을 못잡겠습니다ㅠ
답변 주시면 감사하겠습니다!!
답변 2개 / 댓글 2개
안녕하세요.
제가 짜 놓은 코드이지만, 지금와서 보니 그 부분에 대한 코드가 많이 부실하다고 느껴지네요. ( 나중에 그 부분에 대한 코드는 좀 더 보완 하도록 하겠습니다. )
질문에 대한 답변은...
/lib/gc_client.lib.php 파일에 보시면
297번째 줄에
// Run the query
$gc_var->item_query = new GC_Product_Query($args);
이렇게 되어 있는 부분을 아래와 같이 바꿔주세요. ( 다음 업데이트에 코드가 적용됩니다. )
// Run the query if( ! is_null($wp_query) && is_post_type_archive(GC_NAME) ){ $gc_var->item_query = $wp_query; } else { $gc_var->item_query = new GC_Product_Query($args); }
그리고 항상 실행되는 파일 ( 테마/functions.php 또는 적당한 파일 ) 에
아래 filter 내용을 적용하면 됩니다.
add_filter( 'gc_default_orderby', 'custom_gc_default_orderby' ); function custom_gc_default_orderby($orderby=''){ //기본정렬 지정 return 'it_sum_qty';}
답변에 대한 댓글 1개
shop.lib.php
에 가시면 맨 위에
값이 있습니다.
그 클래스 수정 하면 됨요.
답변에 대한 댓글 1개
답변을 작성하려면 로그인이 필요합니다.