Сначала страница результатов поиска Wordpress, а затем сообщение - PullRequest
0 голосов
/ 26 сентября 2018

Я попытался добавить функцию для поиска по умолчанию в 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');
?>

Спасибо за помощь!

1 Ответ

0 голосов
/ 26 сентября 2018

Вы можете попробовать использовать выражение 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...