Использование WP_Query с пользовательским SQL? - PullRequest
0 голосов
/ 20 октября 2019

Я хочу использовать этот SQL.

"ORDER BY CASE WHEN post_title >= 'C' THEN 1 ELSE 0 END DESC, post_title ASC".

Этот SQL сортирует сообщения и возвращает сообщения, которые начинаются с буквы "C". Я хочу сделать поиск сообщений с сортировкой по первой букве. Этот код SQL является моим решением.

  • Я пытаюсь добавить эту часть SQL с фильтром "posts_orderby". Но это не работает.
  • Я пытаюсь $ wpq = new WP_Query ($ query);
$sql = "SELECT post_title FROM `baddoc_posts` WHERE post_title LIKE '%Иван%' AND post_type = 'doctor' ORDER BY CASE WHEN post_title >= 'И' THEN 1 ELSE 0 END DESC, post_title ASC";
$wpq = new WP_Query();
$wpq->parse_query($sql);
$wpq->get_posts();
function wpse_298888_posts_where( $where, $query ) {
    global $wpdb;

    $starts_with = $query->get( 'starts_with' );

    if ( $starts_with ) {
        $where .= " ORDER BY CASE WHEN $wpdb->posts.post_title >= '$starts_with' THEN 1 ELSE 0 END DESC, $wpdb->posts.post_title ASC";
    }

    return $where;
}
add_filter( 'posts_orderby', 'wpse_298888_posts_where', 10, 2 );

1 Ответ

0 голосов
/ 20 октября 2019
function wpse_postorderby( $orderby, $query ) {
    global $wpdb;

    $starts_with = $query->get( 'starts_with' );

    if ( $starts_with ) {
        $orderby = "CASE WHEN post_title >= '$starts_with' THEN 1 ELSE 0 END DESC, post_title ASC";
    }

    return $orderby;
}
add_filter( 'posts_orderby', 'wpse_postorderby', 10, 2 );

Я решаю! Просто удалите «.»до =

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