Создавая собственную тему, я должен изменить поведение WooCommerce при отображении категории продукта.
Поведение по умолчанию — отображать подкатегории и / или продукты для выбранной пользователем категории. Например, подкатегории и / или продукты для суб-суб-category_a при запросе https://wordpress_site/product-category/category_a/sub-category_a/sub-sub-category_a/
Чего я хочу достичь, так это либо:
https://wordpress_site/product-category/category_a
)https://wordpress_site/product-category/category_a/sub-category_a/sub-sub-category_a/
) и вместо этого отобразить товары для родительской категории суб-category_a вместо продуктов для текущей категории суб-суб-category_aПо моему мнению, я должен изменить $ wp_query, когда вызывается шаблон archive-product.php, но я понятия не имею, как добиться этого правильным способом.
Не могли бы вы мне помочь?
Чтобы ответить на вопрос «почему?», Цель состоит в том, чтобы сверху добавить поле выбора с дочерними категориями вверху страницы и динамически отфильтровать клиентскую часть списка продуктов, чтобы показывать только продукты для выбранной категории или все продукты, если их нет, или выбран вариант «все категории».
Таким образом, в основном, если у категории продукта есть родитель, вы хотите получить все продукты для родительской категории.
Для этого вам нужно отредактировать запрос, выполнив следующие строки:
function prefix_get_parent_category_products( $query ){
// check we're in the right place and the category has a parent
if( $query->is_tax('product_cat') && !empty($query->query_vars['post_parent']) ){
// edit the tax query to include the parent category
$query->set('tax_query', array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $query->query_vars['post_parent'],
'include_children' => true
)
}
return;
}
add_action( 'pre_get_posts', 'prefix_get_parent_category_products' );
Обратите внимание, я не тестировал эту функцию, поэтому вам может потребоваться адаптироваться к вашим потребностям.
Надеюсь, это поможет!
Других решений пока нет …