SdelaemBlog

Создание Сайтов и их настройка

Поиск wordpress по заголовку статьи.

Главная Статьи WordPress Поиск wordpress по заголовку статьи.
#WordPress #Оптимизация

21 февраля 2013

Приветствую, всех зашедших на блог — /. Вебмастера, которые используют wordpress, для управления своими сайтами, могли сталкиваться с одной проблемой данной CMS. Проблема возникает, при попытке найти ту или иную статью на сайте, с помощью стандартного поиска по сайту wordpress. В результаты поиска довольно часто, да что там, почти всегда попадают статьи, которые могут не относиться к тому, что хотел бы найти посетитель на сайте. Связано это с тем, что стандартный поиск wordpress, выводит все результаты, где встречается искомое слово. В этом естественно есть большой минус, заключается он в том, что в результаты поиска попадают статьи, в которых может быть упомянуто искомое слово, но статья может абсолютно не иметь никакого отношения, к необходимой информации. Поэтому данную проблему необходимо решить.

Поиск wordpress по заголовку или title статьи

Вообще на эту статью, меня подтолкнул вопрос заданный мне в комментариях блога. Так как я стандартный поиск не использую на своем блоге, поэтому и не обращал внимание на этот изъян. Я использую поиск по сайту от Яндекс. Ну да ладно, вернемся к нашей теме.

Как же нам сделать поиск wordpress более правильным, чтобы он отдавал результаты, которые действительно хотел бы увидеть пользователь? На самом деле все очень просто. При правильном написании текстов мы всегда стараемся сделать акцент на заголовке статьи, так как именно он попадет в выдачу поисковых систем, и именно от него во многом зависит перейдет пользователь всемирной паутины на сайт или нет. То есть, исходя из этого, становится ясно, что поиск wordpress станет более релевантным, если будет искать именно по title наших постов. Осталось только осуществить задуманное.

Поиск wordpress только по заголовку (title) статьи. Первый способ.

Первый способ довольно простой. Для того, чтобы поправить поиск wordpress нам необходимо открыть файл query.php, который находится в папке wp-includes, с помощью текстового редактора, например NotePad++ и найти вот такую строку:

$search .= "{$searchand}(($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}'))";

И заменить на:

$search .= "{$searchand}((post_title LIKE '{$n}{$term}{$n}'))";

После этого, сохранить файл и залить его обратно на хостинг, использую например бесплатный ftp-клиент FilleZilla.

Теперь наш поиск работает так, как нам нужно и ищет только по заголовкам не используя, при этом контент. Но в данном способе тоже есть небольшой подвох. После обновления движка wordpress, эту операцию придется проделать снова, так как редактируемый файл вернется в свое исходное состояние. В принципе в этом нет ничего такого страшного, так как правка занимает буквально две минуты не более. Но все же, как нам избавиться от этой зависимости, от движка?

Поиск wordpress только по заголовку (title) статьи. Второй способ.

Этот способ также не должен вызвать никаких проблем. Но он будет более приемлем, для большинства, так как после обновления движка, все так и останется, так как в данном случае мы добавим функцию в сам шаблон.

Итак, чтобы поиск wordpress начал искать по заголовку (title) статьи, нужно открыть в текстовом редакторе файл functions.php, который находится в wp-content/themes/Наша_тема и добавить в него следующую функцию:

function __search_by_title_only( $search, &$wp_query )
{
 global $wpdb;
 if ( empty( $search ) )
 return $search; // skip processing - no search term in query
 $q = $wp_query->query_vars;
 $n = ! empty( $q['exact'] ) ? '' : '%';
 $search =
 $searchand = '';
 foreach ( (array) $q['search_terms'] as $term ) {
 $term = esc_sql( like_escape( $term ) );
 $search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
 $searchand = ' AND ';
 }
 if ( ! empty( $search ) ) {
 $search = " AND ({$search}) ";
 if ( ! is_user_logged_in() )
 $search .= " AND ($wpdb->posts.post_password = '') ";
 }
 return $search;
}
add_filter( 'posts_search', '__search_by_title_only', 500, 2 );

После чего сохранить файл, и радоваться тому, что у нас все получилось ;-)

Важно! Данную функцию необходимо добавить до закрывающего тега ?> который находится в самом низу файла.

Я думал еще написать о третьем способе, с использованием плагинов, но передумал, так как не вижу в этом никакого смысла, тут все и так проще пареной репы: скопировал, вставил, сохранил и все.

Но для любителей коллекционировать плагины пачками даю наводку. Вот эти плагины должны вам помочь, но без гарантий, так как я не проверял их:

  1. Search Everything
  2. Search Unleashed (продвинутый плагин, для различных извращенных вариантов поиска).

На этом у меня все. Как видите, более правильный поиск wordpress сделать довольно просто. И любой посетитель вашего сайта сможет найти нужную информацию, используя поиск по заголовку (title) статьи. Не забывайте делать backup, перед редактированием файлов. И конечно же, обязательно подписывайтесь, вдруг я напишу еще, что-нибудь интересное :-P

Удачи, Друзья!

Оставьте свой коммент
ДОСТАВКА СТАТЕЙ ПОЧТОЙ, на дом

Ознакомьтесь с условиями хранения ваших данных

Комментарии

  1. Евгений

    Добрый день, а как сделать, чтобы этот код не глобально на весь поиск во всех формах по сайту действовал, а только в форме поиска из плагина (который у меня отвечает за отсеивание определенных результатов) Я так понимаю, что нужно в другое место вставлять эту функцию, но куда?

    1 год назад26.08.2016 Ответить
  2. Михаил Веб

    @ Мария:
    Здравствуйте.
    Воспользуйтесь каким-нибудь плагином, подсказать не смогу.

    2 года назад22.10.2015 Ответить
  3. Мария

    Простите, а как сделать наоборот, чтобы поиск был только по заголовкам страниц и ничего другого не искал? Спасибо.

    2 года назад20.10.2015 Ответить
  4. Михаил Веб

    @ Дмитрий:
    Здравствуйте. К сожалению не подскажу. Могу только предположить: Замените post_title LIKE. Но далеко не факт.

    2 года назад29.09.2015 Ответить
  5. Дмитрий

    Добрый день! Подскажите пожалуйста, как сделать чтобы поиск искал информацию не только по заголовкам, но и из другой таблицы в БД?

    У меня стоит плагин ziplist recipe и все данные из него хранятся в таблице wp_amd_zlrecipe_recipes.

    2 года назад24.09.2015 Ответить
  6. Михаил Веб

    @ Oksana:
    Попробуйте добавить в function.php следующий код:

    function remove_pages_from_search() {
        global $wp_post_types;
        $wp_post_types['page']->exclude_from_search = true;
    }
    add_action('init', 'remove_pages_from_search');
    3 года назад23.03.2015 Ответить

Чтобы оставить комментарий, заполните, пожалуйста форму ниже:

Смайлы

Нажимая на кнопку "Комментировать" Вы согласшаетесь с условиями политики конфиденциальности

Обязательно для Заполнения!

Обязательно для Заполнения!

Проверка комментариев включена. Прежде чем Ваши комментарии будут опубликованы пройдет какое-то время.

Отправить жалобу разработчику сайта

Если у Вас возникли проблемы, не стесняйтесь отправлять жалобу, она обязательно будет учтена и все будет исправлено.

[contact-form-7 404 "Not Found"]

Спасибо большое за поддержку проекта! :)

Для поддержки проекта, выберите убодный способ для оплаты: