php - 没有插件的自定义帖子类型中的 Wordpress 搜索
问题描述
我正在寻找一种仅在自定义帖子类型中进行搜索查询的方法,有时会过滤掉类别。
我有构建搜索查询的代码,但 WordPress 仍然返回帖子和招聘广告。
<form method="get" id="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>" role="search">
<label class="sr-only" for="s"><?php esc_html_e( 'Search', 'understrap' ); ?></label>
<div class="input-group">
<input class="field form-control" id="s" name="s" type="search"
placeholder="<?php esc_attr_e( 'Otsi …', 'job-ads' ); ?>" value="<?php the_search_query(); ?>">
<input type="hidden" name="post_type" value="job-ads">
</div>
</div>
<div class="col-md-3">
<div class="input-group">
<?php wp_dropdown_categories( array(
'show_option_all' => __('All job ads', 'job-ads'),
'taxonomy' => 'tookategooria',
'name' => 'category',
'orderby' => 'name',
'echo' => 1,
'selected' => $cat,
'hierarchical' => true,
'class' => 'cat-dropdown',
'id' => 'custom-cat-drop',
'value_field' => 'term_id'
) ); ?>
</div>
</div>
<div class="col">
<span class="input-group-append">
<input class="submit btn" id="searchsubmit" name="submit" type="submit"
value="<?php esc_attr_e( 'Search', 'understrap' ); ?>">
</span>
</form>
我的自定义帖子类型也注册了没有插件,公开查询和其他设置已被检查。
如果我手动使用我的搜索字符串,那么它仍然会返回所有帖子
字符串 www.domain.com/?s=&post_type=job-ads&category=323
没有类别也行不通。
对于搜索结果,我使用模板来呈现循环,就像在 Worpress 自己的主题搜索结果中一样。基本上所有的代码都是建立在相同的基础上的。
任何想法如何强制 WordPress 正确显示搜索结果?
解决方案
在您的functions.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' );
推荐阅读
- firebase - Firestore 安全规则拒绝对 firebase-storage 进行读/写
- python - I keep getting errors for my restaurant code?
- reactjs - NavLink 需要在两条路由 React-Router 上处于活动状态
- asp.net - 如何从局部视图发布到 Razor PageModel?
- c# - 为什么 Angular 的请求头修改会抛出选项 401 错误
- typescript - 编译时未定义的 TypeScript 枚举
- kotlin - 类型转换以满足多种类型约束
- java - 无法解决此错误:无法配置数据源
- sails.js - 在 navigator.geolocation 产生结果之前,无法停止 parasails 组件方法中的执行
- c - C语言合并双链表