Для создания своего собственного блока фильтра товаров в WooCommerce, вам потребуется использовать плагин "Advanced Custom Fields" (ACF) и немного кодирования.
Вот шаги, которые вам нужно выполнить:
Шаг 1: Установите и настройте плагин Advanced Custom Fields.
- Зайдите в панель управления вашего сайта WordPress и перейдите в раздел "Плагины".
- Нажмите на кнопку "Добавить новый" и найдите плагин "Advanced Custom Fields".
- Установите и активируйте плагин.
- После активации плагина вы увидите новую вкладку "Поля" в боковой панели администратора.
Шаг 2: Создайте пользовательские поля для фильтра товаров.
- В боковой панели администратора найдите и нажмите на вкладку "Поля" от Advanced Custom Fields.
- Нажмите на кнопку "Добавить новое поле" и настроьте его согласно вашим потребностям. Например, вы можете создать поле "Цвет" с типом данных "Выбор" и добавить список цветов, или поле "Размер" с типом данных "Это текст" для ввода определенного размера.
Шаг 3: Добавьте поля фильтра в шаблон товаров WooCommerce.
- Откройте файл шаблона, который отображает товары на вашем сайте WooCommerce. Обычно это файл с именем "archive-product.php" или "taxonomy-product_cat.php".
- Внутри шаблона найдите место, где хотите отобразить блок фильтра.
- Вставьте следующий код в это место:
<?php $fields = get_field_objects(); // Получите все пользовательские поля из ACF if ($fields) { foreach ($fields as $field) { $field_name = $field['name']; $field_label = $field['label']; if ($field['type'] === 'checkbox') { // Если поле является флажком, создайте фильтр со списком значений $field_values = $field['choices']; echo '<div class="filter-field">'; echo '<h4 class="filter-field-title">' . $field_label . '</h4>'; foreach ($field_values as $value => $label) { echo '<label><input type="checkbox" name="' . $field_name . '[]" value="' . $value . '"> ' . $label . '</label>'; } echo '</div>'; } // Добавьте другие проверки для остальных типов полей, которые вы создали с помощью ACF } } ?>
Шаг 4: Подключите JavaScript для фильтрации товаров.
- Создайте новый файл JavaScript с именем "filter-products.js".
- Вставьте следующий код в этот файл:
(function($) { $(document).ready(function() { $('.filter-field input').change(function() { var filters = []; $('.filter-field input:checked').each(function() { var field = $(this).attr('name'); var value = $(this).val(); filters.push({ field, value }); }); $.ajax({ url: '/wp-admin/admin-ajax.php', type: 'POST', data: { action: 'filter_products', filters: filters }, success: function(response) { $('.products').html(response); }, error: function() { console.log('Error filtering products.'); } }); }); }); })(jQuery);
Шаг 5: Создайте функцию обработчика запроса AJAX.
- Откройте файл functions.php вашей темы и вставьте следующий код:
add_action('wp_ajax_filter_products', 'filter_products'); add_action('wp_ajax_nopriv_filter_products', 'filter_products'); function filter_products() { $filters = isset($_POST['filters']) ? $_POST['filters'] : array(); $query_args = array( 'post_type' => 'product', 'posts_per_page' => -1, 'meta_query' => array( 'relation' => 'AND' ), ); foreach ($filters as $filter) { $query_args['meta_query'][] = array( 'key' => $filter['field'], 'value' => $filter['value'], 'compare' => 'IN', ); } $products = new WP_Query($query_args); if ($products->have_posts()) { while ($products->have_posts()) { $products->the_post(); // Выводите здесь информацию о товарах в соответствии со своим шаблоном } } else { // Выводите сообщение об отсутствии товаров, удовлетворяющих выбранным фильтрам } wp_reset_postdata(); die(); }
После завершения всех этих шагов у вас должен быть работающий блок фильтра товаров в WooCommerce. Обратите внимание, что этот код просто дает вам основу для создания фильтра товаров и вы можете настраивать его дальше в соответствии с вашими потребностями и дизайном вашего сайта.