我正在使用自定义构建的主题,并且在构建搜索页面时遇到了问题。
主题基于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();
感谢阅读!
答案 0 :(得分:0)
在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;
}
实际上你可以使用archive-product.php中的条件is_search(),search.php文件仅用于全局搜索,也可以从结果代码中删除$ args和loop,因为默认情况下提供woocommerce搜索模板。