создание страницы результатов поиска woocommerce с нуля - поисковый запрос игнорируется - PullRequest
0 голосов
/ 30 апреля 2018

Я использую собственную тему и у меня возникла проблема при создании страницы поиска.

тема основана на проекте HTML Bones - https://github.com/eddiemachado-zz/bones

Мне удалось заставить страницу поиска отображать цикл, но она не использует предоставленный поисковый термин, вместо этого отображаются все продукты.

Я надеялся, что кто-то с немного большим опытом сможет указать, почему поисковый термин игнорируется в этой настройке?

Код для формы поиска:

<form role="search" method="get" id="searchform" class="searchform" action="<?php echo site_url( '/' ); ?>">
    <div>
        <label for="s" class="screen-reader-text"><?php _e('Search for:','bonestheme'); ?></label>
        <input type="search" id="s" name="s" value="" />

        <button type="submit" id="searchsubmit" ><?php _e('Search','bonestheme'); ?></button>
    </div>
</form>

и код страницы результатов:

<?php
/**
 * The template for displaying search results pages.
 *
 */

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly


get_header(); ?>

    <div id="primary" class="content-area">
        <main id="main" class="container site-main" role="main">

        <ul id="product-list-global" class="products product-list-global col-sm-9">
    <?php

        $args = array(
            'post_type' => 'product',
            'posts_per_page' => 12
            );
        $loop = new WP_Query( $args );
        if ( $loop->have_posts() ) {
            while ( $loop->have_posts() ) : $loop->the_post();

                wc_get_template_part( 'content', 'product' );

            endwhile;
        } else {
            echo __( 'No products found' );
        }
        wp_reset_postdata();
    ?>
</ul><!--/.products-->
            <?php
 get_template_part( 'sidebar-shop-default' ); ?>

        </main><!-- #main -->
    </div><!-- #primary -->

<?php

get_footer();

Спасибо за чтение!

1 Ответ

0 голосов
/ 01 мая 2018

Добавить код ниже в function.php

add_filter( 'get_product_search_form' , 'woo_custom_product_searchform' );

/**
 * woo_custom_product_searchform
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function woo_custom_product_searchform( $form ) {

    $form = '<form role="search" method="get" id="searchform" action="' . esc_url( home_url( '/'  ) ) . '">
        <div>
            <label class="screen-reader-text" for="s">' . __( 'Search for:', 'woocommerce' ) . '</label>
            <input type="text" value="' . get_search_query() . '" name="s" id="s" placeholder="' . __( 'My Search form', 'woocommerce' ) . '" />
            <input type="submit" id="searchsubmit" value="'. esc_attr__( 'Search', 'woocommerce' ) .'" />
            <input type="hidden" name="post_type" value="product" />
        </div>
    </form>';

    return $form;

}

На самом деле вы можете использовать условную функцию is_search () в archive-product.php, вместо этого файл search.php используется только для глобального поиска, а также удалить $ args и loop из вашего кода результата, поскольку по умолчанию woocommerce предоставляет шаблон поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...