@Mezza
Композитор, аранжировщик, музыкант

Как заменить стандартный поиск Wordpress на поиск Woocommerce?

Добрый день. Стандартный поиск вшит в тему и компактно располагается в хедере, по этому, не хотелось бы добавлять еще одну форму поиска. Проблема в том, что это интернет-магазин и вместо "товаров-как-товаров" поиск выдает "товары-как-посты"
5cbd99f64879f208879117.jpeg

Как заставить стандартный поиск выдавать результат не ?s=%поисковый запрос%, а ?s=%поисковый запрос%&post_type=product?

В данный момент файл поиска выглядит так:
<?php if ( false !== et_get_option( 'show_search_icon', true ) || is_customize_preview() ) : ?>
				<?php if ( 'fullscreen' !== et_get_option( 'header_style', 'left' ) ) { ?>
					<div class="clear"></div>
				<?php } ?>
				<form role="search" method="get" class="et-search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>">
				<input type="hidden" name="post_type" value="product" />
				
					<?php
						printf( '<input type="search" class="et-search-field" placeholder="%1$s" value="%2$s" name="s" title="%3$s" />',
							esc_attr__( 'Search &hellip;', 'Divi' ),
							get_search_query(),
							esc_attr__( 'Search for:', 'Divi' )
						);
					?>
					
					<button type="submit" id="searchsubmit_header"></button>
				</form>
  • Вопрос задан
  • 1898 просмотров
Решения вопроса 1
@Mezza Автор вопроса
Композитор, аранжировщик, музыкант
Проблема решена для темы Divi. В файле header.php забиты две формы поиска: первая как модуль (у меня это строка 151), вторая как элемент хеддера (у меня строка 320). Проблема была в том, что я вносил изменения в строку модуля. После постановки
<input type="hidden" name="post_type" value="product" />
в элемент хеддера проблема решилась.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Kozack
@Kozack Куратор тега WordPress
Thinking about a11y
В файл поиска темы (searchform.php) добавьте
<input type="hidden" name="post_type" value="product">
Ответ написан
Как вариант заменить вывод стандартного поиска на поиск woocommerce
echo do_shortcode('[woocommerce_product_search]');

или в файле functions.php прописать функцию
function search_product($query) {
    if ($query->is_search) {
        $query->set('post_type', 'product');
    }
    return $query;
}
add_action('pre_get_posts','search_product');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы