我正在尝试将WordPress搜索URL更改为一些用户友好的URL。
我当前的搜索网址如下:
?s=fim&post_type%5B%5D=post&post_type%5B%5D=blog
我在哪里过滤搜索并仅从post_type获得帖子:帖子和博客。
我已经尝试了这两种方法:
functions.php
function wpb_change_search_url() {
if ( is_search() && ! empty( $_GET['s'] ) ) {
wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( 's' ) ) );
exit();
}
}
add_action( 'template_redirect', 'wpb_change_search_url' );
和
.htaccess
# Change WordPress search URL
RewriteCond %{QUERY_STRING} \\?s=([^&]+) [NC]
RewriteRule ^$ /search/%1/? [NC,R,L]
但是这两个重定向页面并使我失去了post_type过滤器。
有什么想法吗?
答案 0 :(得分:1)
function foo_modify_query_order( $query ) {
if( is_admin() )
return;
if( is_search() && $query->is_main_query() ) {
$post_type = array('resource');
$query->set('post_type', $post_type);
$query->set( 'orderby', 'date' );
$query->set( 'order', 'DESC' );
$query->set('posts_per_page', -1);
}
}
add_action( 'pre_get_posts', 'foo_modify_query_order' );
此查询将从“ blog”和“ post”帖子类型中过滤帖子。