我正在为新站点构建一个自定义搜索页面,以包括博客文章和产品的自定义部分,但是作为目前的“临时”解决方案,我只想返回产品而不是文章的搜索结果
我正在使用Wordpress <div class="modal hidden" id="modal">
<div class="title">
<span data-for="title"></span>
<div class="controls">
<span data-action="hide" data-target="#modal">X</span>
</div>
</div>
<div class="content" data-for="content">
</div>
</div>
<div class="product">
<div class="productName">Red Hoodie</div>
<div class="productPrice">14.72$</div>
<div class="productExtension">
<div class="productDescription">This hoodie is in red color</div>
</div>
</div>
<div class="product">
<div class="productName">Blue Hoodie</div>
<div class="productPrice">14.75$</div>
<div class="productExtension">
<div class="productDescription">This hoodie is in blue color</div>
</div>
</div>
并使用Divi子主题(Divi父主题v - 4.9.8
)
我目前正在尝试将v - 3.17.6
中的以下代码插入pre_get_posts
中,但它仍然只返回“帖子”结果,而不返回产品:
functions.php
关于如何进行这项工作的任何想法?我在想也许自己制作一个// LIMIT SEARCH TO POSTS OR PRODUCTS ONLY
add_filter('pre_get_posts','SearchFilter', 9);
function SearchFilter($query) {
if ( !is_admin() && $query->is_search ) {
$query->set('post_type', 'product');
}
return $query;
}
页面可以代替吗?我觉得search.php
中的一些简单操作会更好。
答案 0 :(得分:1)
您必须按照以下过程通过products
进行搜索
步骤-1
自定义帖子类型的搜索表单:Products
--->在您代表搜索表单的地方添加以下代码
<div>
<h3>Search Products</h3>
<form role="search" action="<?php echo site_url('/'); ?>" method="get" id="searchform">
<input type="text" name="s" placeholder="Search Products"/>
<input type="hidden" name="post_type" value="products" /> <!-- // hidden 'products' value -->
<input type="submit" alt="Search" value="Search" />
</form>
</div>
步骤-2
---->在活动主题function.php
function template_chooser($template)
{
global $wp_query;
$post_type = get_query_var('post_type');
if( $wp_query->is_search && $post_type == 'products' )
{
return locate_template('archive-search.php'); // redirect to archive-search.php
}
return $template;
}
add_filter('template_include', 'template_chooser');
步骤3
--->为自定义帖子类型(archive-search.php)创建搜索结果模板
<?php
/* Template Name: Custom Search */
get_header(); ?>
<div class="contentarea">
<div id="content" class="content_right">
<h3>Search Result for : <?php echo "$s"; ?> </h3>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div id="post-<?php the_ID(); ?>" class="posts">
<article>
<h4><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h4>
<p><?php the_exerpt(); ?></p>
<p align="right"><a href="<?php the_permalink(); ?>">Read More</a></p>
<span class="post-meta"> Post By <?php the_author(); ?>
| Date : <?php echo date('j F Y'); ?></span>
</article><!-- #post -->
</div>
<?php endwhile; ?>
<?php endif; ?>
</div><!-- content -->
</div><!-- contentarea -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>