• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Фильтр по размеру

Nikson

Новичок
Добрый день, подскажите как реализовать фильтр по размеру при таких условиях:
стоит yith product filter. Иерархия такая
Карточка-матка (товары обувь с размерным рядом от 35 до 42 р-р) (simple product) разбиты по категориям, остатки подтягиваются из Мой склад, каждый размер это тоже simple product. Через ACF в карточку-матку подтягиваются вариации по размерам (то, что загрузилось из Мой склад). Надеюсь понятно объяснил))) Из-за того, что отсутствует таксономия размера, я не пойму куда двигаться)
 

marr

Специалист
Местный
Структура понятна. Не понятно, в чем вопрос.
 

Nikson

Новичок
Да я не догоняю как забить это в фильтр, т.к. товар может быть в наличии, но в не нужном размере, а фильтрацию можно сделать по таксономии, но у меня размер — это ACF… как-то можно это склеить?)
 

Вложения

  • 54ae0695-998f-4ecb-9fc6-53e05443c3af.jpeg
    54ae0695-998f-4ecb-9fc6-53e05443c3af.jpeg
    23.1 KB · Просмотры: 3
  • 6da5b334-320c-4402-a64f-f3b2a335ae73.jpeg
    6da5b334-320c-4402-a64f-f3b2a335ae73.jpeg
    70.9 KB · Просмотры: 3

marr

Специалист
Местный
Вы ведь хотите в результатах фильтрации получить только родительские товары? Так заведите родителям атрибут размер, заполните значениями, которые сейчас в наличии, и фильтруйте себе на здоровье. Другой вопрос, как обновлять эти атрибуты после каждой синхронизации со складом. Тут мне трудно дать совет, не зная, как у вас связаны родительские товары с дочерними. Видимо, надо написать функцию, которая считывает дочерние товары из полей ACF и результатом обновляет значения атрибута размер у родителя.
 

Nikson

Новичок
Вы ведь хотите в результатах фильтрации получить только родительские товары? Так заведите родителям атрибут размер, заполните значениями, которые сейчас в наличии, и фильтруйте себе на здоровье. Другой вопрос, как обновлять эти атрибуты после каждой синхронизации со складом. Тут мне трудно дать совет, не зная, как у вас связаны родительские товары с дочерними. Видимо, надо написать функцию, которая считывает дочерние товары из полей ACF и результатом обновляет значения атрибута размер у родителя.
Ну да, самое главное забыл написать, что надо чтобы выводилось то, что в наличии естественно )) думал, что я какую-то базу не понимаю, а тут функции,,, программировать !=
 

marr

Специалист
Местный
а тут функции,,, программировать !=
Судя по исходному посту вы уже писали функции, у вас кастомный функционал

Через ACF в карточку-матку подтягиваются вариации по размерам
Вот это как выводится на фронтэнде?
 

Nikson

Новичок
Судя по исходному посту вы уже писали функции, у вас кастомный функционал


Вот это как выводится на фронтэнде?
Да это не я, это кто-то до меня)

это оно или что-то дефолтное из темы? Astra: simple.php (woocommerce/single-product/add-to-cart/simple.php)
PHP:
ksort($sizes);
                if( count($sizes) ){
                    $product_id = '';
                    echo '<div class="variations"><select id="sizes"><option value="">Выберите размер</option>';
                    foreach($sizes as $size=>$product_size_id){
                        echo '<option name="'.$size.'" value="'.$product_size_id.'" />'.str_replace('size_','',$size).'</option>';
                    }
                    echo '</select></div>';
                    ?>
                    <script type="text/javascript">
                        jQuery(document).ready(function(){
                            var variatons_titles = <?php echo json_encode( $variatons_titles, true); ?>;
                            var variatons_prices = <?php echo json_encode( $variatons_prices, true); ?>;
                            jQuery( ".single_add_to_cart_button.disabled" ).click(function(){
                                if( jQuery( this ).hasClass('disabled') ){
                                    event.preventDefault();
                                    alert('Выберите размер');
                                    return false;
                                }
                            });
                            jQuery( "#sizes" ).on( "change", function() {
                                if( jQuery( this ).val().length ){
                                    jQuery( ".single_add_to_cart_button" ).val(jQuery( this ).val());
                                    jQuery( ".single_add_to_cart_button.disabled" ).removeClass('disabled');
                                    jQuery(".product_title").first().html(variatons_titles[jQuery( this ).val()]);
                                    jQuery(".summary.entry-summary .price").first().html(variatons_prices[jQuery( this ).val()]);
                                }else{
                                    jQuery( ".single_add_to_cart_button" ).addClass('disabled');
                                }
                            });
                        });       
                    </script>
                    <?php
                }
 

marr

Специалист
Местный
У астры нет папки woocommerce. Так что да, у вас в этой папке доработки, сделанные предыдущим специалистом. Надо в них разбираться. В этом куске вывод, то не видно, откуда берутся $sizes
 
Сверху Снизу