안녕하세요. 현재 우커머스 Shop 페이지를 들어가게되면 설정한것에 따라 모든 상품이 한번에 나열됩니다.(카달로그)
그런데 여기서 저는 etc 라는 카테고리에 있는 물품들은 제외하고 싶습니다.
etc, a, b 라는 카테고리가 있으면 shop 페이지에 카달로그는 a,b에 속한 상품만 보이게요.
그리고 따로 etc 카테고리에 들어가게되면 그제서야 etc에 있는 상품을 볼수있게 하고 싶습니다.
function custom_pre_get_posts_query( $q ) {
$tax_query = (array) $q->get( 'tax_query' );
$tax_query[] = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'etc' ), // Don't display products in the clothing category on the shop page.
'operator' => 'NOT IN'
);
$q->set( 'tax_query', $tax_query );
}
열심히 구글링을 통해서 관련 코드를 찾았습니다.
분명 첫페이지 카달로그까지는 정상 작동을 했는데.. 문제는 etc 라는 카테고리에 들어가면 거기서도 상품이 안보이더라구요..
https://mfsound.co.kr/shop/ 이 주소에서는 보이지 않고
https://mfsound.co.kr/product-category/etc/ 이 주소에서만 확인이 가능하게 하고 싶습니다.
가능할까요?
안녕하세요~^^
아래 링크를 참고하신 건지요?
https://docs.woocommerce.com/document/exclude-a-category-from-the-shop-page/
$q->queried_object->name 변수를 활용해보는 건 어떨까 합니다.
기존의 코드 대신
아래의 코드로 교체해서 확인해보시겠어요?
function custom_pre_get_posts_query( $q ) {
if(!(isset($q->queried_object->name)&&$q->queried_object->name == 'etc')){
$tax_query = (array) $q->get( 'tax_query' );
$tax_query[] = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array('etc'), // Don't display products in the clothing category on the shop page.
'operator' => 'NOT IN'
);
$q->set( 'tax_query', $tax_query );
}
}
add_action( 'woocommerce_product_query', 'custom_pre_get_posts_query' );
고맙습니다.