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

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

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

Приветствую, всех зашедших на блог — /. Вебмастера, которые используют 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. Oksana

    @ Михаил Веб:

    А можете подсказать, как исключить из поиска страницы, чтобы поиск только в статьях искал?

    Ответить
  2. Михаил Веб

    @ Андрей:
    Ну все правильно, второй код для стандартного поиска wordpress. Ну а по плагину к сожалению ничего подсказать не могу.

    Ответить
  3. Андрей

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

    Ответить
  4. Михаил Веб

    @ Андрей:
    С плагином не знаком. Попробуйте его отключить и применить два кода:
    Первый из статьи.
    А второй, который я Вам написал в прошлый раз. Только необходимо указать ID Ваших категорий, которые должны быть исключены.
    Все проверил, все работает.

    Ответить
  5. Андрей

    Спасибо код работает, но плагин (Dave’s WordPress Live Search) продолжает выводить посты из заблокированных рубрик, но код который ищет только по заголовкам полностью совмещается с этим плагином. При этом в самом плагине есть функция, в которой можно заблокировать рубрики, только безрезультатно пробовал по разному все равно выводит…

    Ответить
  6. Михаил Веб

    @ Андрей:
    Здравствуйте.
    Добавьте, например еще одну функцию:

    function SearchFilter($query) {
        if ($query->is_search) {
    	$query->set('category__not_in','10'); //указываем ID исключаемых рубрик
        }
        return $query;
    }
    add_filter('pre_get_posts','SearchFilter');

    Эта функция распространяется не только на поиск по заголовкам, но и на весь поиск wordpress в целом.
    Чтобы вычеркнуть из поиска ту или иную рубрику добавьте в код ID необходимой рубрики. В коде-примере ID указан 10, его меняем на свой и все. Если необходимо указать несколько рубрик, укажите необходимые ID через запятую.

    Ответить
  7. Андрей

    Спасибо, все работает даже совмещается с плагином живого поиска(это когда вводишь несколько слов и выдает результаты) Как заблокировать выдачу в поиске ненужных страниц и постов в определенных рубриках?

    Ответить
  8. Михаил Веб

    @ Сергей:
    Здравствуйте.
    Посмотрев сайт, я к сожалению не могу ответить на Ваш вопрос. Необходимо смотреть сам шаблон.

    Ответить
  9. Сергей

    Здравствуйте, всё сделал как написано (второй способ), но всё равно не хочет находить.
    Посмотрите пожалуйста сайт, и скажите в чём проблема.

    Ответить
  10. Михаил Веб

    @ Вадим: Здравствуйте, результаты поиска и так должны выводиться на отдельной странице. За эту страницу отвечает файл search.php (обычно, но название может быть другое), там и уберите сайдбар.

    Ответить
  11. Вадим

    Здравствуйте! У меня к Вам вопрос, помогите пожалуйста! У меня на wordpress Twentyten стоит стандартный поисковик и меня это пока устраивает потому-что я только наполняю сайт и у меня там пока и не чего искать. Но вопрос вот в чем. Поисковик находит две статьи которые есть у меня на сайте, но одна статья написана на странице с сайбарам, а другая статья написана на странице без сайдбара и когда я нажимаю поиск, то эти две статьи выводятся на одной странице, которая с сайдбаром и все накладывается друг на друга. Как можно изменить страницу на которую выводит поисковик, чтобы она была без сайдбара? Или как сделать чтобы при нажатии на поиск все что он нашел выводилось на новую страницу? Заранее спасибо!

    Ответить
  12. Михаил Веб

    @ Капля Смысла: Понятно. Я это и имел ввиду, только можно добавить еще популярные статьи или последние.

    Ответить
  13. Капля Смысла

    Вот на этом блоге у Ирины Селищевой Ссылка удалена
    Раньше был какой-то текст утешительный и картинка. Сейчас вижу просто поисковик поставили, но и то не так ужасно как НИЧЕГО НЕ НАЙДЕНО.

    Ответить
  14. Капля Смысла

    Не срочно, видела такую страничку на одном интересном блоге, обзавидовалась… ( И полезно ведь для блога и читателей. Отыщу ссылку на тот блог — отпишусь в гугл+.

    Ответить
  15. Михаил Веб

    @ Капля Смысла: Спасибо за поздравления. Была идея и более того есть, постараюсь написать в ближайшем будущем. По поводу похожих статей навряд ли, но пару самых популярных или последних постов вывести можно. Если срочно, пишите через форму обратной связи, постараюсь помочь.

    Ответить
  16. Капля Смысла

    Здравствуйте, Михаил!
    Прежде всего с праздником!
    В связи с вопросом поиска на блоге, не возникало ли у Вас идеи написать о том, как оформить страничку 404? Не найдено ничего по запросу на блоге и читателю выдаётся это ужасное 404. Как сделать так, чтобы читателю вместо 404 рекомендовалось просмотреть ту или иную рубрику или, по крайней мере, выдавалось 3 статьи похожей тематики? Буду очень признательна, если просветите как можно подробнее и самым простым языком…

    Ответить
  17. Михаил Веб

    @ Юрий: Согласен, не выдаст. Но это только, при условии, если пользователь ищет именно тот товар, с которым идет сравнение, то есть который не указан в заголовке статьи.
    Но если пользователь ищет тот или иной товар, он необязательно подразумевает, тем более если статья относится к обзору, что он хочет сравнить его с другим, чаще ведь ищут именно обзор, то есть описание самого товара. А насчет сравнивания, если честно он не совсем подходит, для использования поиска, скорее для сравнения должен быть отдельный функционал. Но опять же это мое мнение, а у вас оно другое. Но я понял о чем Вы в принципе и соглашусь, что такой поиск подойдет не всем, это ведь всего лишь один (из множества возможных) вариант.

    Ответить
  18. Юрий

    @ Михаил Веб:
    Смотрите: Что касается важной информации, есть ресурс обзоров цифровой техники. Заголовок, так и звучит «обзор такого-то устройства», но в статье может встретиться, помимо обзора, описание сравнения данной модели устройства с каким либо другим устройством. Понимаете о чем я? Ваш поиск не выдаст эту статью при запросе о сравнении, даже если текст в статье будет в точности удавлетворять искомую фразу.

    Ответить
  19. Михаил Веб

    @ Юрий: Спасибо за ваше мнение. Но этот вопрос на самом деле слишком спорный, чтобы даже начинать дискуссию. Но все же…
    Во-первых статья написана с учетом того, что заголовки говорят, о чем данная статья.
    Второе, если честно не понял, если в тексте есть какая-то важная информация не относящаяся к заголовку, то о чем может быть эта статья, если только обо всем сразу, но какой тогда от нее толк, если даже в итоге поисковые системы навряд ли поймут на чем вы хотели сделать акцент, и куда определять эту стать в выдаче.
    Вот, например, я когда писал статью. Я проверял на локалке: Вбивал запрос «настроить», но результаты по тексту это полный бред(имхо), так как wordpress выдавал все вперемешку и получалось, что если пользователь хочет, что-то настроить, результаты поиска хотят ему рассказать о похожих новостях (это правда), при этом результатов было очень много. И в связи с этим пользователю придется самостоятельно ДОискать нужную информацию и выбрать из общей кучи.
    А с применением данного метода, пользователь находит именно статьи о «настроить», а не о чем-то другом, где встречается эта фраза или слово. И хочу заметить (возвращаясь к двусмысленности), что я не напишу заголовок «установить», если речь пойдет о настроить. Вот что имел ввиду я.
    Но у каждого свое мнение в любом вопросе и это правильно. И плагинов парочку я написал в статье.
    По крайней мере Мы сошлись на поиске от Яши или Google :-)

    Ответить
  20. Юрий

    Ну ограничить поиск только по заголовкам, тоже не лучшее решение. Вопервых не каждый автор умеет четко подобрать заголовок для своей статьи или куда чаще встречается, когда заголовок имеет двусмысленное значение. А вовторых, статья может затрагивать полезную информацию, которая не связана напрямую с заголовком.
    Я встречал много плагинов, которые позволяют осуществлять поиск как по тексту, так и по заголовкам. Думаю, если «свой» поиск принципеально важен, то стоит найти подходящий плагин. Но я бы, как и Вы воспользовался поиском от Яндекс или Гугл. Опять же, если поиск действительно важен на вашем сайте.

    Ответить
  • 1
  • 2

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

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

Навигация по статье
Как добавить форму поиска на сайт wordpress?

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

Как добавить форму поиска на сайт wordpress?

Оптимизация изображений или как сделать css-спрайты?

Ускорение загрузки страниц сайта нужно для поискового продвижения и улучшения поведенческих факторов, так как поисковые системы учитывают данные параметры при ранжировании сайтов в поисковой выдаче. Однако не все вебмастеры знают, какими методами осуществить ускорение сайта. Одним из таких методов, является оптимизация изображений с помощью css-спрайтов. На данный момент — это весьма актуальная тема.

Оптимизация изображений или как сделать css-спрайты?

Тег more — как редактировать ссылку читать далее на wordpress

Вывод тега more на wordpress в том виде, в котором нужно вам, а не по умолчанию. Вместо надоевшего «Читать Далее» можно написать любой текст, вплоть до уникального текста ссылки, для каждой статьи. Кроме этого можно изменить сам внешний вид и расположение тега more на wordpress. При этом, от Вас не потребуется никаких знаний — нужно всего лишь прочитать пост и будет Вам счастье.

Тег more — как редактировать ссылку читать далее на wordpress