Wordpress 如何使用仅搜索帖子的第二种形式?
Wordpress how to use a second form that only searches for posts?
我的 wordpress 网站上有两个表单,search.blade.php
和 blog-search.blade.php
。
search.blade.php
在站点的 header 中,搜索所有内容类型。
blog-search.blade.php
意味着只搜索 post 类型。
我正在使用以下代码让它只搜索博客 posts:
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','searchfilter');
可以理解,这适用于 search.blade.php 和 blog-search.blade.php,但我只希望它适用于 blog-search.
我想如果我添加一个条件来检查仅存在于 blog-search 上的隐藏输入的值,我可以让它工作,但我不知道该怎么做。
这是我的 blog-search.blade.php 代码:
<form action="{{ get_bloginfo('url') }}" method="GET" class="blog-search-form">
<input type="search" name="s" placeholder="Search the blog...">
<input type="hidden" name="search-type" value="normal" />
<span class="icon-search"></span>
</form>
有什么方法可以实现类似的东西:
function searchfilter($query) {
if ($query->is_search && !is_admin() && INPUT TYPE == HIDDEN ) {
$query->set('post_type', 'post');
}
...
这样只有 blog-search 搜索 post,而我的主搜索照常进行?我尝试了 implementing this,但没有成功,所以我认为条件语句可能会有所帮助。
search.blade.php,以防万一:
<form action="{{ get_bloginfo('url') }}" method="GET" class="search-form">
<input type="search" name="s" placeholder="Search the site">
</form>
您可以通过多种方式进行设置。我个人总是使用 ajax 方法来查询数据库,但是如果您想使用 query_vars
方法,因为您已经在考虑它并在您的问题中提出建议,那么您可以这样做:
这就是您的 html 表格:
<form method="GET">
<input type="search" name="s" placeholder="Search the blog...">
<input type="hidden" name="onlyblog" id="onlyblog" value="yes" />
<span class="icon-search"></span>
<button type="submit">Search</button>
</form>
然后在 php
方面,您的条件检查将针对 onlyblog
值,如下所示:
function searchfilter($query) {
$query_type = isset($_GET['onlyblog']) ? sanitize_text_field($_GET['onlyblog']) : "";
if ($query->is_search && !is_admin() && !empty($query_type) && 'yes' == $query_type) {
$query->set('post_type', 'post');
}
return $query;
}
让我知道你是否能够让它工作!
我的 wordpress 网站上有两个表单,search.blade.php
和 blog-search.blade.php
。
search.blade.php
在站点的 header 中,搜索所有内容类型。
blog-search.blade.php
意味着只搜索 post 类型。
我正在使用以下代码让它只搜索博客 posts:
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','searchfilter');
可以理解,这适用于 search.blade.php 和 blog-search.blade.php,但我只希望它适用于 blog-search.
我想如果我添加一个条件来检查仅存在于 blog-search 上的隐藏输入的值,我可以让它工作,但我不知道该怎么做。
这是我的 blog-search.blade.php 代码:
<form action="{{ get_bloginfo('url') }}" method="GET" class="blog-search-form">
<input type="search" name="s" placeholder="Search the blog...">
<input type="hidden" name="search-type" value="normal" />
<span class="icon-search"></span>
</form>
有什么方法可以实现类似的东西:
function searchfilter($query) {
if ($query->is_search && !is_admin() && INPUT TYPE == HIDDEN ) {
$query->set('post_type', 'post');
}
...
这样只有 blog-search 搜索 post,而我的主搜索照常进行?我尝试了 implementing this,但没有成功,所以我认为条件语句可能会有所帮助。
search.blade.php,以防万一:
<form action="{{ get_bloginfo('url') }}" method="GET" class="search-form">
<input type="search" name="s" placeholder="Search the site">
</form>
您可以通过多种方式进行设置。我个人总是使用 ajax 方法来查询数据库,但是如果您想使用 query_vars
方法,因为您已经在考虑它并在您的问题中提出建议,那么您可以这样做:
这就是您的 html 表格:
<form method="GET">
<input type="search" name="s" placeholder="Search the blog...">
<input type="hidden" name="onlyblog" id="onlyblog" value="yes" />
<span class="icon-search"></span>
<button type="submit">Search</button>
</form>
然后在 php
方面,您的条件检查将针对 onlyblog
值,如下所示:
function searchfilter($query) {
$query_type = isset($_GET['onlyblog']) ? sanitize_text_field($_GET['onlyblog']) : "";
if ($query->is_search && !is_admin() && !empty($query_type) && 'yes' == $query_type) {
$query->set('post_type', 'post');
}
return $query;
}
让我知道你是否能够让它工作!