Клиент хочет, чтобы только переменные продукты отображались как отдельные продукты на страницах категорий, и для этого нам нужен фильтр, я создал wp-запрос, чтобы получить эти продукты на страницах категорий
Пример пользовательского запроса для страницы категории:
<?php //showing products by category
$cat_name = 'sommerbettdecke'; // Product category name
$args = array(
'post_type' => 'product_variation',
'post_status' => 'publish',
'order' => 'ASC',
'posts_per_page' => -1,
'post_parent__in' => get_variation_parent_ids_from_term( $cat_name, 'product_cat', 'name' ), // Variations
'tax_query' => array( array(
'taxonomy' => 'pa_jahreszeit',
'field' => 'slug',
'terms' => 'sommer',
'operator' => 'IN',
) )
);
$wc_query = new WP_Query($args);?>
<p class="product-counter">Products on page <strong><?php echo $wc_query->post_count?></strong></p>
<ul class="products">
<!-- count all products on page -->
<?php if ($wc_query->have_posts()) :
while ($wc_query->have_posts()) :
$wc_query->the_post(); ?>
<!-- get attributes -->
<?php global $product; ?>
<?php $pa_fullung = array_shift( wc_get_product_terms( $product->id, 'pa_fullung', array( 'fields' => 'names' ) ) ); ?>
<?php $pa_grose = array_shift( wc_get_product_terms( $product->id, 'pa_grose', array( 'fields' => 'names' ) ) ); ?>
<!-- get product image -->
<?php $attachment_ids[0] = get_post_thumbnail_id( $product->id ); ?>
<?php $attachment = wp_get_attachment_image_src($attachment_ids[0], 'full' ); ?>
<!-- product display start here -->
<li class="product">
<a href="<?php the_permalink(); ?>">
<?php if ( has_post_thumbnail( $product->id ) ) { ?>
<img src="<?php echo $attachment[0] ; ?>" class="card-image" />
<?php } ?>
<div class="produt-cat-loop">
<h2><?php the_title(); ?></h2>
<table>
<tbody><tr>
<td>Füllung:</td>
<td><?php echo $pa_fullung ?></td>
</tr>
<tr>
<td>Füllgewicht:</td>
<td><?php echo $pa_grose ?></td>
</tr>
<tr>
<td>Hülle:</td>
<td>Definisati atribut</td>
</tr>
</tbody>
</table>
</div>
<button class="btn-orange">Zum Produkt</button>
</a>
</li>
<!-- product display ends here -->
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php else: ?>
<!-- no products message -->
<p><?php _e( 'No Products' ); ?></p>
<?php endif; ?>
</ul>
Мне пришлось перечислить их по категориям и по атрибуту, чтобы получить его в правильном направлении. Теперь мне нужно получить фильтр боковой панели для этих продуктов, по умолчанию фильтр продуктов woocommerce не работает с пользовательскими запросами. Есть ли какой-нибудь плагин, который мог бы работать с пользовательским запросом, или есть ли способ получить переменные продукты как отдельные продукты и получить продукты на страницах категорий по категориям и атрибутам по умолчанию woocommerce l oop?
- при перечислении товаров на странице категории я должен перечислять их не только по слагу категории, но и по значению атрибута (pa_jahreszeit), в этом примере запроса этот атрибут равен 'pa_jahreszeit', а его значение равно 'sommer' - не уверен, что это можно сделать по умолчанию. woocommerce l oop из archive-product. php
Обновление: -в боковой панели мне нужно отфильтровать товары по атрибутам и цене
Заранее спасибо, извините за орфографические ошибки
Обновление vol.2: Вот код из функций. php - использование pre_get_posts
add_action( 'pre_get_posts', 'rc_modify_query_get_design_projects' );
function rc_modify_query_get_design_projects( $product ) {
$product->set('post_type', 'product_variation');
if (is_category( '2312' ) ) {
$taxquery = array(
array(
'taxonomy' => 'pa_jahreszeit',
'field' => 'slug',
'terms' => 'sommer',
'operator' => 'IN'
)
);
$product->set( 'tax_query', $taxquery );
}
}
Когда я помещаю налоговый запрос за пределы if (is_category( '2312' ) ) {
, он работает нормально, но пока налоговый запрос находится внутри этого условия, он не работает, он показывает все переменные продукты: /