将wordpress搜索结果从发布更改为产品

时间:2018-11-19 00:04:09

标签: php wordpress woocommerce hook-woocommerce

我正在为新站点构建一个自定义搜索页面,以包括博客文章和产品的自定义部分,但是作为目前的“临时”解决方案,我只想返回产品而不是文章的搜索结果

我正在使用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

Original Code Doc

关于如何进行这项工作的任何想法?我在想也许自己制作一个// 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中的一些简单操作会更好。

1 个答案:

答案 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(); ?>