问题
我的网站上有一个页面,我需要在该页面中进行额外搜索。我使用默认的WordPress搜索方式
<?php get_search_form(); ?>
对于我的主标题搜索,这非常有效。
我在页面上创建了另一个HTML表单,没有使用默认的PHP方法,用于其他搜索,如下所示:
<form action="<?php bloginfo(\'siteurl\'); ?>" id="searchform" method="get">
<div>
<label for="s" class="screen-reader-text">Search for:</label>
<input type="text" id="s" name="s" value="" />
<input type="hidden" name="post_type" value="photo_group" />
<input type="submit" value="Search" id="searchsubmit" />
</div>
</form>
我使用
type=hidden
要获取我要搜索的自定义帖子类型,请执行以下操作:
<input type="hidden" name="post_type" value="photo_group" />
这给了我一个类似以下内容的链接:
http://mywebsite.com/?s=search&post_type=photo_group
当我使用在页面上创建的新搜索表单时,它使用默认搜索。php显示结果。如何显示自定义帖子类型搜索的搜索结果,比如在
div
在同一页上
我尝试过创建一个新的页面模板来显示结果,但没有成功,这是否是正确的做法,而我只是做错了?
*Edit*我正在尝试sanchothefat的解决方案。这看起来对吗?这是我搜索结果和搜索查询的全部div。
<div id="photo-search">
<h2>Search Photos:</h2>
<form action="<?php the_permalink(); ?>" id="searchform" method="get">
<div>
<label for="s" class="screen-reader-text">Search for:</label>
<input type="text" id="search" name="search" value="" />
<input type="hidden" name="post_type" value="photo_group" />
<input type="submit" value="Search" id="searchsubmit" />
</div>
</form>
<?php if( isset( $_REQUEST[\'search\'] ) ) {
query_posts( array(
\'s\' => $_REQUEST[\'search\'],
\'post_type\' => $_REQUEST[\'photo_group\'],
\'paged\' => $paged
));
if( have_posts() ) : while ( have_posts() ) :
the_title();
the_content();
endwhile; endif;
wp_reset_query();
}
?>
</div>
运行搜索时,我发现404错误页未找到。
最合适的回答,由SO网友:sanchothefat 整理而成
最简单的选项是,如果要在页面上下文中显示搜索结果,则需要执行自定义循环,否则将无法访问页面信息。
使用名称更改输入s
到其他类似的地方search
或q
阻止wordpress这样做通常是内置搜索。
下一步更改表单action
当前页面URL的参数。您可以使用<?php get_permalink(); ?>
为此。
您需要执行的循环如下:
<?php
if ( isset( $_REQUEST[ \'search\' ] ) ) {
// run search query
query_posts( array(
\'s\' => $_REQUEST[ \'search\' ],
\'post_type\' => $_REQUEST[ \'post_type\' ],
\'paged\' => $paged
)
);
// loop
if ( have_posts() ) : while ( have_posts() ) :
// loop through results here
endwhile; endif;
// return to original query
wp_reset_query();
}
?>