对自定义帖子类型使用标准搜索功能

时间:2016-12-12 作者:The Sumo

我正在使用以下表单html在wordpress网站上生成搜索功能:

<form method="get" action="<?php bloginfo(\'url\'); ?>">
<fieldset>
<input type="text" name="s" value="" placeholder="search&hellip;" maxlength="50" required="required" />
<button type="submit">Search</button>
</fieldset>
</form>
它工作正常,但我只希望返回特定自定义帖子类型的结果。我正在使用搜索。来自TwentyEleven主题的php模板,其中包含以下内容:

<?php  global $wp_query; ?>
<h1 class="search-title"><?php echo $wp_query->found_posts; ?> Results found for: <span><?php the_search_query(); ?></span></h1>

         <?php if ( have_posts() ) { ?>
           <ul class="results">
             <?php while ( have_posts() ) { the_post(); ?>
                <li>
                  <?php if ( has_post_thumbnail() ) { ?><div class="post-image"><a href="<?php echo get_permalink(); ?>"><?php the_post_thumbnail(\'thumbnail\');?></a></div><?php }?>
                                    <div class="post-content">
                                    <h3><a href="<?php echo get_permalink(); ?>"><?php the_title();  ?></a></h3>
                  <p><?php echo substr(get_the_excerpt(), 0,140); ?>... <a href="<?php the_permalink(); ?>">Read More</a></p>
                                </div>
                </li>
             <?php } ?>
             </ul>
         <?php } ?>
是否有一个变量,我可以添加到某个地方,只返回特定帖子类型的结果?谢谢

2 个回复
最合适的回答,由SO网友:The Sumo 整理而成

好的,所以我做了更多的挖掘,结果很简单。我只需要在搜索表单中添加一个隐藏的输入。将此张贴在此处,供其他正在寻找答案的人使用:

<form class="search" action="<?php echo home_url( \'/\' ); ?>">
        <input type="search" name="s" placeholder="Search&hellip;">
        <input type="submit" value="Search">
        <input type="hidden" name="post_type" value="custom-post-type">
</form>
显然,您需要将值“custom post type”替换为您自己的自定义post type。

SO网友:tormorten

更优雅的解决方案是使用pre_get_posts 行动

<?php 

function my_pre_get_posts($query) {

    if( is_admin() ) 
        return;

    if( is_search() && $query->is_main_query() ) {
        $query->set(\'post_type\', \'custom-post-type-name\');
    } 

}

add_action( \'pre_get_posts\', \'my_pre_get_posts\' );
这将不需要更改模板。

相关推荐

nothing happen in search form

我想创建搜索表单,但当我搜索时什么都没有发生,这是代码:索引。php: <div class=\"tech-btm\"> <?php get_search_form();?> </div> 搜索表单:<form role=\"search\" method=\"get\" id=\"searchform\" action=\"<?php echo home_url(\'/\')?>\"> &