Я использовал для фильтрации товаров по атрибутам и диапазону цены плагин Themify, редактировал его циклы и поля под себя, по сути поменял плагин по себя.
Он хорошо фильтрует через ajax циклы товаров, которые вызваны через шорткод, но шорткоды мне не подходят, потому что я понятия не имею как пользоваться хуками и ищу просто способ вывести цикл в php где смогу поставить любой класс каждому блоку. Нашел для себя WP_QUERY вывод, с визуальной части устраивает, но есть одно "но". Блок с циклом
WP_QUERY никак не реагирует на фильтрацию через этот плагин. Вернее даже сказать что имитация деятельности есть, однако фильтрации как таковой не происходит.
Первым делом я подумал на то что в array не указаны правильные атрибуты.
<?php
$loop = new WP_Query( array(
'post_type' => 'product',
'posts_per_page' => '12',
));
while ( $loop->have_posts() ): $loop->the_post(); ?>
<div <?php post_class("catalog-block"); ?>>
<a href="" class="image"><?php the_post_thumbnail("thumbnail-215x300"); ?></a>
<div class="name"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div>
<?php woocommerce_template_loop_price(); ?>
<?php woocommerce_template_loop_add_to_cart(); ?>
</div>
<?php endwhile; wp_reset_postdata(); ?>
Вот код цикла кстати. Сейчас там стоит просто количество товаров на страницу и тип записи.
Я пробовал ловить из URL атрибуты, но руки кривые и ничего из этого не работало.
Искал в php плагина какие то зацепки, может выставить с теми же атрибутами, возможно это сработает, но не могу найти нужные.
Ссылка на php формы фильтрации
https://dropmefiles.com/13qSE .
И помимо прочего, в форме нет опции сортировки по цене, по умолчанию и тд. Поэтому я таким образом вывел ту самую сортировку :
<?php
$catalog_orderby = apply_filters( 'woocommerce_catalog_orderby', array(
'menu_order' => __( 'Default sorting', 'woocommerce' ),
'price' => __( 'Sort by price: low to high', 'woocommerce' ),
'price-desc' => __( 'Sort by price: high to low', 'woocommerce' )
) );
if ( get_option( 'woocommerce_enable_review_rating' ) == 'no' )
unset( $catalog_orderby['rating'] );
foreach ( $catalog_orderby as $id => $name )
echo '<li>
<span class="filter-checkbox sort-hover">
<a href="' . get_permalink( woocommerce_get_page_id( 'shop' ) ) . '?orderby=' . $id . '" >' . esc_attr( $name ) . '</a>
</span>
</li>';
?>
Что значит что нужно чтобы код цикла еще ловил из url "orderby".