Задать вопрос

Как выполнить поиск только по заголовкам постов?

Есть скрипт, который ищет записи содержащие определенное слово.
Как доработать скрипт, чтобы поиск был только по заголовкам записей?
Текущий скрипт:
$args = array(
  'posts_per_page' => -1,
  'post_type'      => array( 'jobs', 'services' ),
  's'              => 'инже',
);

$search = new WP_Query( $args );


Результат, который мне нужен SQL запросом:
SELECT * FROM posts WHERE post_title LIKE '%инже%'
  • Вопрос задан
  • 145 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@petruncho Автор вопроса
Решение:
Спасибо Dymok за наводку)

1. Добавляем в functions.php темы
// find_posts_by_title_part — название функции, можно заменить на любое свое название
// title_part — название нового параметра для WP_Query()
function find_posts_by_title_part( $where, &$wp_query ){
    global $wpdb;

    if ( $title_part = $wp_query->get( 'title_part' ) ) {
        $param = esc_sql( $wpdb->esc_like( $title_part ) );
        $sql .= " AND " . $wpdb->posts . ".post_title LIKE '%" . $param . "%'";
    }

    return $sql;
}
add_filter( 'posts_where', 'find_posts_by_title_part', 10, 2 );


2. Пишем запрос к базе данных через WP_Query()
$args = array(
  'posts_per_page' => -1,
  'post_type'      => array('projects', 'jobs', 'services'),
  'order'          => 'ASC',
  'title_part'     => 'инже',
);

$query = new WP_Query( $args );
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы