Как построить такой поиск в Wordpress

SubAqua
На сайте с 21.10.2005
Offline
199
755

Имею желание и ищу возможность.. :)

Есть сайт на Wordpress в котором я хотел бы реализовать поиск только по заголовкам. Причем внешний вид результатов чтобы был примерно в таком исполнении,

Три колонки:

Рубрика поста

Полное название поста без сокращения (есть очень длинные заголовки, надо чтобы выводился полный текст)

Дата публикации

По скрину

Всего три колонки, которые я отметил желтыми стикерами.

Первая - названия рубрик должны быть как ссылки и при нажатии на ссылку должен быть не переход в рубрику, а сужение результатов поиска до этой рубрики. Кто юзает торренты знаком с этой фичей.

Вторая колонка - полный заголовок поста. Есть длинные заголовки, символов по 300-400. Клик на заголовке переход в пост.

Третья - Дата публикации.

Никаких других полей нет, только эти.

Поиск не должен грузить запросами основную БД однозначно. Должна быть отдельная своя таблица для этого дела.

Обновление индекса должно быть по крону раз в сутки.

В поиске участвуют только тексты загловков но не содержание.

Фича: в поиске должны отрезаться последние символы прежде чем будет выборка. Сколько символов не знаю, думаю 1-2. Также надо чтобы искались слова

Китайский Китайская

если в запросе ввели Китай

Как это сделать? :)

koala
На сайте с 18.07.2006
Offline
39
#1

ответ на вопрос - написать, довольно-таки не простой, плаг для реализации такого поиска в WP

babnicks
На сайте с 23.10.2009
Offline
47
#2
SubAqua:
Имею желание и ищу возможность.. :)
Как это сделать? :)

Ничего сложного в реализации данной штуки нет, создаете отдельную табличку с full-text индексом и делаете скрипт для ее заполнения из таблиц WP


select t3.name, p.post_title, p.post_date
from wp_posts p
join wp_term_relationships t1 on ( t1.object_id = p.ID )
join wp_term_taxonomy t2 on ( t2.term_taxonomy_id = t1.term_taxonomy_id )
join wp_terms t3 on ( t3.term_id = t2.term_id )

Только надо понимать, что в WP может быть привязка одного поста к нескольким категориям и тогда Вам надо или делать в запросе min или понимать, что возможно на выходе будет 2 строки для одного поста.

Дальше на эту табличку делаете like или match запрос и все.

Интегрировать все это хозяйство в WP можно по-разному:

1. Написать тупой PHP скрипт который будет выполнять SQL запрос к БД и выводить результат в нужном шаблоне.

2. Создать простенький плагин.

3. Заменить стандартный код поиска WP на Ваш.

Универсальные варианты №1 и №2

Вариант №3 возможно более удобен, если обновлять WP планируется не часто и не лень потом снова править исходники.

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

100% защита от спам-ботов (https://www.keycaptcha.com)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий