我遇到了我的WordPress主题(“悉尼”)显示搜索结果错误的问题。我只想显示WooCommerce产品,而不仅仅是列出帖子。
这些应该按如下图所示的漂亮网格排列:
。
目前,结果列出如下
。
如何更改搜索结果的显示方式?
此刻我的search.php
看起来像这样:
<?php get_header(); ?>
<div id="primary" class="content-area col-md-9">
<main id="main" class="post-wrap" role="main">
<?php if ( have_posts() ) : ?>
<header class="page-header">
<h3><?php printf( __( 'Search Results for: %s', 'sydney' ), '<span>' . get_search_query() . '</span>' ); ?></h31>
</h3>
</header><!-- .page-header -->
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php
/**
* Run the loop for the search to output the results.
* If you want to overload this in a child theme then include a file
* called content-search.php and that will be used instead.
*/
get_template_part( 'content', 'search' );
?>
<?php endwhile; ?>
<?php the_posts_navigation(); ?>
<?php else : ?>
<?php get_template_part( 'content', 'none' ); ?>
<?php endif; ?>
</main><!-- #main -->
</div><!-- #primary -->
非常感谢你们!
** 更新 kashalo提供的解决方案部分起作用,但是搜索结果看起来与产品页面略有不同,并且仅在一列而不是网格中列出。
** 更新
Alexander Wigmore建议的解决方案看起来几乎就像我想要的那样。在page.php
中复制search.php
的唯一问题是产品仍在显示,而不是在它们所适合的类别中显示时才显示。例如:搜索 saat 结果首先显示的是商品,但通常在 Saatgut 类别下显示。
答案 0 :(得分:0)
我的建议是不要直接修改wp或主题模板的搜索文件,而是使用子主题的一种好习惯。对于结果的设计显示,您可以花一点时间用css对其进行自定义,而不是仅显示产品,您可以使用基于所使用主题(如果有)构建的任何过滤器,也可以自己创建一个用于过滤结果的函数(也称为挂钩)。
用于过滤结果的示例类似于上面的代码:
add_action( 'pre_get_posts', 'filter_woocommerce_products' ); // the hook
function filter_woocommerce_products( $query ) { // the function
if( ! is_admin() && is_search() && $query->is_main_query() ) {
// verify if can use the search function and the search string is from the search call
$query->set( 'post_type', 'product' ); // filter the posts with type products that corrispond to woocommerce products.
}
}
,并且此功能必须保存在您的主题或子主题的function.php文件中。
有关更多信息,建议您在wp页面上阅读有关子主题和pre_get_posts文档的更多信息。
希望它会有所帮助,随时问。
答案 1 :(得分:0)
您将要修改Wordpress处理搜索的方式。
添加“操作”即可轻松完成此操作,将以下代码添加到您的functions.php
文件中。
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type',array('product'));
}
return $query;
}
add_filter('pre_get_posts','searchfilter');
这将使搜索页面仅显示产品。值得注意的是,您可以通过以下行中的array
重新添加其他帖子类型:$query->set('post_type',array('product'));
。