Я использую тему, которая имеет фильтр ajax для страниц категорий товаров, и она работает очень хорошо.
Единственное, что желание кнопки отображается, когда кто-то выбирает фильтры, донНе сбрасывайте их, он направляет посетителя обратно на страницу магазина.Как мне изменить логику кнопки, чтобы она просто сбрасывала выбранные фильтры?Чтобы пользователи оставались на той странице, где они находятся?Потому что сейчас кнопка не имеет смысла.
Спасибо пока.
HTML
<div class="nm-shop-results-bar has-filters is-category">
<a href="http://localhost/amaoni/" id="nm-shop-filters-reset" data-shop-url="http://localhost/amaoni/">
<i class="nm-font nm-font-close2"></i>Filters active <span>(1)</span></a>
<a href="http://localhost/amaoni/" id="nm-shop-search-taxonomy-reset" data-shop-url="http://localhost/amaoni/"
<i class="nm-font nm-font-close2"></i>Showing <span>“Hundebetten”</span></a>
</div>
PHP
<?php
/**
* NM: Shop - Results bar/button
*/
defined( 'ABSPATH' ) || exit;
global $nm_theme_options;
$results_bar_class = '';
$results_bar_buttons = array();
// Filters
$filters_count = nm_get_active_filters_count();
if ( $filters_count ) {
$results_bar_class = ' has-filters';
$results_bar_buttons['filters'] = array(
'id' => 'nm-shop-filters-reset',
'title' => sprintf( esc_html__( 'Filters active %s(%s)%s', 'nm-framework' ), '<span>', $filters_count, '</span>' )
);
}
// Search
if ( ! empty( $_REQUEST['s'] ) ) { // Is search query set and not empty?
$results_bar_class .= ' is-search';
$results_bar_buttons['search_taxonomy'] = array(
'id' => 'nm-shop-search-taxonomy-reset',
'title' => sprintf( esc_html__( 'Search results for %s“%s”%s', 'nm-framework' ), '<span>', esc_html( $_REQUEST['s'] ), '</span>' )
);
}
// Taxonomy
else if ( is_product_taxonomy() ) {
$results_bar_buttons['search_taxonomy'] = array(
'id' => 'nm-shop-search-taxonomy-reset'
);
$current_term = $GLOBALS['wp_query']->get_queried_object();
if ( is_product_category() ) {
$results_bar_class .= ' is-category';
$results_bar_buttons['search_taxonomy']['title'] = sprintf( esc_html__( 'Showing %s“%s”%s', 'nm-framework' ), '<span>', esc_html( $current_term->name ), '</span>' );
} else {
$results_bar_class .= ' is-tag';
$results_bar_buttons['search_taxonomy']['title'] = sprintf( esc_html__( 'Products tagged %s“%s”%s', 'nm-framework' ), '<span>', esc_html( $current_term->name ), '</span>' );
}
}
if ( ! empty( $results_bar_buttons ) ) :
?>
<div class="nm-shop-results-bar <?php echo esc_attr( $results_bar_class ); ?>">
<?php
$shop_url = esc_url( get_permalink( wc_get_page_id( 'shop' ) ) );
foreach ( $results_bar_buttons as $button ) {
printf( '<a href="%s" id="%s" data-shop-url="%s"><i class="nm-font nm-font-close2"></i>%s</a>',
$nm_theme_options['shop_filters_enable_ajax'] ? '#' : $shop_url,
$button['id'],
$shop_url,
$button['title']
);
}
?>
</div>
<?php endif; ?>
Я думаю, что это часть кода, которая направляет пользователей на страницу магазина, но я не знаю, как ее изменить, чтобы она просто сбрасывала выбранные фильтры.
<div class="nm-shop-results-bar <?php echo esc_attr( $results_bar_class ); ?>">
<?php
$shop_url = esc_url( get_permalink( wc_get_page_id( 'shop' ) ) );
foreach ( $results_bar_buttons as $button ) {
printf( '<a href="%s" id="%s" data-shop-url="%s"><i class="nm-font nm-font-close2"></i>%s</a>',
$nm_theme_options['shop_filters_enable_ajax'] ? '#' : $shop_url,
$button['id'],
$shop_url,
$button['title']
);
}
?>
</div>
<?php endif; ?>
Javascript
if (self.filtersEnableAjax) {
/* Bind: Results bar - Filters reset link */
self.$shopWrap.on('click', '#nm-shop-filters-reset', function(e) {
e.preventDefault();
var resetUrl = location.href.replace(location.search, ''); // Get current URL without query-strings
self.shopGetPage(resetUrl);
});
/* Bind: Results bar - Search/taxonomy reset link */
self.$shopWrap.on('click', '#nm-shop-search-taxonomy-reset', function(e) {
e.preventDefault();
var $resetButton = $(this);
if ($resetButton.closest('.nm-shop-results-bar').hasClass('is-search')) {
// Search
var urlSearchParam = self.urlGetParameter('s'), // Check for the "s" parameter in the current page URL
// Search from external page: Get default/main shop URL (current URL may not be the default shop URL)
// Search from shop page: Get current URL without query-strings (current URL is a shop URL)
resetUrl = (urlSearchParam) ? $resetButton.data('shop-url') : location.href.replace(location.search, '');
} else {
// Category or tag
var resetUrl = $resetButton.data('shop-url'); // Get default/main shop URL
}
self.shopGetPage(resetUrl);
});
}
}