• Добрый день!

    Нужно используя стандартный поиск WooCommerce на одной странице сначала вывести одну форму поиска с реузльтатами, а когда нажимают на результат в левой колонке, выводилось два независимых столбца с результатами.

    Т.е., чтобы когда идёт запрос URL вида:
    sitename/?s1=tt&post_type=product
    В одной страницы (в левой колонке) выводятся результаты поиска по фразе «tt».

    А когда идёт запрос URL вида:
    sitename/?s1=tt&s2=xxxxx&post_type=product
    В одной страницы (в левой колонке) выводятся результаты поиска по фразе «tt», а в другой части страницы (в правой колонке) результаты по фразе «xxxxx»

    Файлы, причастные к поиску и выводу результатов обнаружил следующие:
    wp-content/plugins/instantsearch-for-woocommerce/instantsearch-for-woocommerce.php
    wp-content/plugins/woocommerce/includes/widgets/class-wc-widget-product-search.php
    wp-content/plugins/woocommerce/includes/wc-template-functions.php
    wp-content/plugins/woocommerce/includes/wc-template-hooks.php
    wp-content/plugins/woocommerce/templates/product-searchform.php
    wp-content/themes/auto-repair/search.php
    wp-content/themes/auto-repair/searchform.php

    Функции, используемые для анализа URL и вывода результатов поиска:
    wp-includes/functions.php
    wp-includes/general-template.php
    wp-includes/l10n.php

    Если есть здесь разбирающиеся люди, подскажите плиз, что нужно изменить и в каких файлах.
    Чувствую, что это делается достаточно просто…

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • По умолчанию форма поиска в «searchform.php»:

    <form role="search" method="get" class="searchform clearfix" action="<?php echo esc_url( home_url( '/' ) ) ?>">
    	<label for="search-text-widget" class="visuallyhidden"><?php _e( 'Search for:', 'auto-repair' ) ?></label>
    	<input id="search-text-widget" type="text" value="" name="s" placeholder="<?php _e( 'Search', 'auto-repair' )?>" required="required" />
    	<input type="submit" value="<?php _e( 'Search', 'auto-repair' )?>" />
    	<?php if ( defined( 'ICL_LANGUAGE_CODE' ) ) : ?>
    		<input type="hidden" name="lang" value="<?php echo esc_attr( ICL_LANGUAGE_CODE ) ?>"/>
    	<?php endif ?>
    </form>

    Понимаю, что надо создать файлы «searchform1.php» и «searchform2.php»,
    и изменить значение name="s" на name="s1" и name="s2" соответственно.

    Где-то подключить эти два файла, изменить в function wp_extract_urls( $content ).

    Что-то подобное с двумя поисками нашёл здесь:
    http://mywordpress.ru/support/viewtopic.php?id=25783

    Он ковырял файлы search.php и searchform.php , и создал два шаблона:
    recipe-search.php – для вывода результатов поиска через плагин
    site-search.php – для вывода результатов стандартного поиска

    Похожее, но не совсем мой вариант

    Есть здесь разбирающиеся в WP люди?
    Что-то тишина какая-то

    Чуствую, не дождусь я ответа, как обещано в заголовке ветки форума…

    Копаю пока сам.

    1. Заменил в файле «wp-includes/general-template.php» вызов формы с «searchform.php» на «searchform1.php»

    2. Из файла «wp-content/themes/auto-repair/searchform.php» создал там же файл «searchform1.php», скопирова содержимое, только заменил внутри все выражения «s» на «s1» в тегах name, id.

    3. Тоже самое проделал с «wp-content/plugins/woocommerce/templates/product-searchform.php» — создал там же файл «product-searchform1.php»

    При нажатии на кнопку ИСКАТЬ в строке URL начал появляться «s1=…».

    Но это в стандартном поиске. А в WooCommerce — по-прежнему s=…
    .

    Товары всё также выводятся не взирая на строку поиска.

    Нашёл где делается вывод товаров:
    /wp-content/plugins/woocommerce/includes/wc-template-functions.php;

    строка:484; функция вывода: woocommerce_product_loop_start(..)

    Оказывается, woocommerce эту же функцию как просто для отображения каталога товаров, так и для отображение результатов поиск с учётом заданной фразы (или фильтрация).

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Двух-этапный поиск на WooCommerce, AutoRepair» закрыта для новых ответов.