Как ограничить область поиска WordPress только заголовками записей

Для того, чтобы иметь возможность ограничить область встроенного поиска движка WordPress только заголовками записей и страниц, читатель может воспользоваться следующим относительно сложным фрагментом программного кода, который нужно будет вставить в файл functions.php собственной темы:

<?php
add_filter('posts_search', 'iskat_tolko_po_zagolovkam', 500, 2);

function iskat_tolko_po_zagolovkam($poisk, &$wp_zapros) {
    global $wpdb;
    if (empty($poisk)) :
        return $poisk; // пропустить обработку - нет поискового запроса.
    endif;
    $q = $wp_zapros->query_vars;
    $n = !empty($q['exact']) ? '' : '%';
    $poisk = $poiskand = '';
    foreach ((array) $q['search_terms'] as $term) :
        $term = esc_sql(like_escape($term));
        $poisk .= "{$poiskand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
        $poiskand = ' AND ';
    endforeach;
    if (!empty($poisk)) :
        $poisk = " AND ({$poisk}) ";
        if (!is_user_logged_in()) :
            $poisk .= " AND ($wpdb->posts.post_password = '') ";
        endif;
    endif;
    return $poisk;
}
?>

Здесь используем крючок-функцию на фильтр под названием posts_search, где я и модифицирую запрос.





© 2012-2014 Druweb.ru. Вы можете спокойно копировать любые материалы сайта только при наличии обратной ссылки.