FacetWP 를 이용한 Archive 페이지 필터링 URL 직접 접속
상품 목록 등 특정 archive 페이지를 FacetWP 루프로 구성하며 filter query string 으로 직접 접속하게 되면, URL에 정의된 FacetWP 필터가 작동하지 않음.
이 경우 Archive 페이지가 아닌 일반 페이지에 FacetWP를 구성하는 방법으로 구성하면 되지만, Archive 페이지들의 Permalink 를 유지하는 측면(SEO 고정성)과, Template hierarchy 를 따르고 유지하여 다양한 목록에 대한 통일성을 유지한다는 측면에서 Archive 페이지를 유지하는 것이 좋다.
이를 해결하는 또 다른 방법으로 FacetWP 에서 제공하는 ‘is_main_query’ 필터를 이용하여 특정 조건에서 FacetWP 가 워드프레스의 main query 를 대체하도록 하면 된다. ( FacetWP에 우선권을 주어야 제대로 필터링 된 값이 전달 됨. )
예: 슬러그가 ‘shopping’ 이라는 상품카테고리 페이지일 경우
add_filter( 'facetwp_is_main_query', function( $is_main_query, $query ) {
if ( $query->is_tax('product_cat', 'shopping') && !empty($_GET['_producty_category']) ) {
$is_main_query = false;
}
return $is_main_query;
}, 10, 2 );