@brenna
Для создания ajax фильтра по наличию товаров в WooCommerce вам потребуется некоторое программное обеспечение и код. Ниже приведен пример кода, который позволяет фильтровать товары по наличию с использованием jQuery ajax и функций WooCommerce:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
<?php add_action('wp_ajax_filter_products', 'filter_products'); add_action('wp_ajax_nopriv_filter_products', 'filter_products'); function filter_products() { $args = array( 'post_type' => 'product', 'posts_per_page' => -1, 'meta_query' => array( array( 'key' => '_stock_status', 'value' => 'instock' ) ) ); $products = new WP_Query($args); if ($products->have_posts()) { while ($products->have_posts()) { $products->the_post(); ?> <div class="product"> <h2><?php the_title(); ?></h2> <?php the_post_thumbnail(); ?> <?php the_content(); ?> </div> <?php } } else { echo 'No products found.'; } wp_reset_postdata(); die(); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<form id="filter-form"> <label for="instock-checkbox">In Stock Only</label> <input type="checkbox" id="instock-checkbox"> <input type="submit" value="Submit"> </form> <div id="product-container"></div> <script> jQuery(document).ready(function ($) { $('#filter-form').on('submit', function (e) { e.preventDefault(); var isChecked = $('#instock-checkbox').prop('checked'); $.ajax({ url: "<?php echo admin_url('admin-ajax.php'); ?>", type: "POST", data: { action: 'filter_products', instock: isChecked }, success: function (response) { $('#product-container').html(response); } }); }); }); </script> |
При отправке формы через AJAX будет запускаться функция filter_products()
, которая будет выполнять запрос к базе данных WordPress и отображать товары, у которых есть наличие, или сообщение "No products found.", если таких товаров нет.
Убедитесь, что код настроен и расположен в правильных файлах и папках вашей темы.
@brenna
Не забудьте также добавить обработку ошибок и возможность показа загрузочного индикатора или сообщения о загрузке данных пользователю во время выполнения AJAX запроса. Это может быть полезно для улучшения пользовательского опыта на вашем сайте.
Также обратите внимание, что при использовании AJAX необходимо проверять безопасность и защищенность вашего кода. Для этого следует проводить соответствующую валидацию и санитизацию данных.