我试图为WP默认搜索添加一个功能,我想先将其结果添加到鞋子页面项目上,然后发布项目,但目前尚不可行。 我没有使用任何插件进行搜索。
这是我的代码(在function.php中):
第一个
<?php
function filter_search($query) {
if ($query->is_search) {
$query->set('post_type', array('page', 'post'));
};
return $query;
};
add_filter('pre_get_posts', 'filter_search');
?>
我尝试过的第二个
<?php
function filter_search($query) {
if ($query->is_search) {
$query->set('post_type',
array(
'post_type'=>'page',
'orderby' => 'title',
'order' => 'DESC',
)
);
} else {
$query->set('post_type',
array(
'post_type'=>'post',
'order' => 'DESC',
)
);
};
return $query;
add_filter('pre_get_posts', 'filter_search');
?>
感谢您的帮助!
答案 0 :(得分:0)
您可以尝试使用SQL CASE表达式
add_filter( 'posts_orderby', 'order_search_by_posttype', 10, 2 );
function order_search_by_posttype( $orderby, $wp_query ){
if( ! $wp_query->is_admin && $wp_query->is_search ) :
global $wpdb;
$orderby =
"
CASE WHEN {$wpdb->prefix}posts.post_type = 'page' THEN '1'
WHEN {$wpdb->prefix}posts.post_type = 'post' THEN '2'
ELSE {$wpdb->prefix}posts.post_type END ASC,
{$wpdb->prefix}posts.post_title ASC";
endif;
return $orderby;
}
我在这里找到了此解决方案,https://wordpress.stackexchange.com/questions/177650/sort-search-results-by-post-type/177653#177653