URL 매개 변수를 사용하여 제품을 필터링하고 / shop / 페이지에 표시하는 기능을 이미 만들었습니다. 잘 작동합니다.
그러나 제품 템플릿이 WooCommerce /shop/
페이지 에 설정된 경우에만 작동합니다 .
필자의 경우 요구 사항은 카테고리 목록을 /shop/
페이지의 기본 템플릿으로 설정하는 것 입니다. 즉, URL 매개 변수를 사용하여 제품 쿼리를 실행할 때 해당 템플릿을 재정의하고 필터링 된 제품 목록을 표시해야합니다.
(예. example.com/shop/?param1=foo¶m2=bar
)
다음 코드 (및 일부 반복)를 시도했지만 제품 필터가 적용될 때 기본 템플릿을 재정의하는 방법에 대한 단서가 없습니다.
add_filter( 'woocommerce_locate_template', [$this, 'my_include_template_function'], 10, 3 );
public function my_change_template_function($template, $template_name, $template_path)
{
if (!empty($_GET['param1']) && is_shop() && $template_name == 'content-product_cat.php') {
return wc_get_template_part('content', 'product');
} else {
return $template;
}
}
따라서 범주 루프의 소스는 [필터를 통해] [1] 루프 시작에 추가됩니다.
add_filter( 'woocommerce_product_loop_start', 'woocommerce_maybe_show_product_subcategories' );
및 woocommerce_maybe_short_product_subcategories()
함수에 기초하여 출력을 변경한다 :
$display_type = woocommerce_get_loop_display_mode();
그러나 woocommerce_get_loop_display_mode()
결과는 직접 필터링 할 수 없습니다.
그러나 get_option()
(설정이 사용자 get_option()
지정자 에 있으므로)의 일부 값에 의존하며 다음을 통해 필터링 할 수 있습니다.option_$option
따라서 특정 매개 변수 가있을 때 WooCommerce 에 카테고리를 표시 하지 않도록 지시 하는 잠재적 인 방법 은 해당 매개 변수가 URL에서 감지 $_GET
될 products
때 상점 표시 모드 옵션을 필터링 할 수 있습니다 . 이렇게 :
/**
* Filter shop display type.
*
* @param string $value - 'products' | 'subcategories' | 'both'
* @return string
*/
function kia_woocommerce_shop_page_display( $value ) {
if ( ! empty( $_GET['param1'] ) {
$value = 'products';
}
return $value;
}
add_filter( 'option_woocommerce_shop_page_display', 'kia_woocommerce_shop_page_display' );
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다