Поиск: как расширить существующий поиск, включив пользовательскую таблицу

Я создал пользовательскую таблицу 'products' со следующим полем: title, description, url. Элементы, хранящиеся в таблице, импортируются.

Я хотел бы расширить поиск wordpress в этой таблице. Можно ли сделать это?

Solutions Collecting From Web of "Поиск: как расширить существующий поиск, включив пользовательскую таблицу"

По умолчанию WordPress ищет по ключевому слову. Это означает, что при передаче поискового запроса «Loren Ipsum» WordPress строит следующее для предложения WHERE:

((wp_posts.post_title LIKE '%Loren%') OR (wp_posts.post_content LIKE '%Loren%')) AND ((wp_posts.post_title LIKE '%Ipsum%') OR (wp_posts.post_content LIKE '%Ipsum%')) 

Этот ответ может быть вам полезен! Для этого есть плагин: Поиск всего

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

  • Подумайте о предпочтительном URL: http://www.example.com/search/ <product_name>
  • Создайте шаблон WordPress для своего пользовательского поиска.
  • Добавьте страницу с соответствующим шаблоном. Обратите внимание на идентификатор страниц
  • Добавьте необходимые теги перезаписи. Вы будете использовать их позже в своем шаблоне поиска:

     add_action('init','custom_rewrite_tags'); function custom_rewrite_tags() { add_rewrite_tag('%var%','([^&]+)'); } 
  • Теперь вы можете создать свой переписать, чтобы поиск был довольно привлекательным по своему вкусу

     add_action('admin_init','action_custom_rewrite_rules'); function action_custom_rewrite_rules() { add_rewrite_rule('^search/([^&]+)/?$','index.php?page_id=<the page id>&var=$matches[1]','top'); } 

    Правило add rewrite указывает регулярное выражение для соответствия URL-адресу, а соответствующий запрос будет отправлен index.php. Записи регулярных выражений пересчитываются в переменной $ matches, начиная с индекса 1 первой захваченной группы. В этом случае все равно http://www.example.com/search/ <here> /. Мы присваиваем соответствие вашему пользовательскому тегу rewrite.

  • Теперь в вашем шаблоне поиска вы можете запустить функцию, и у нее будет доступ к тегам перезаписи. Пример, вернет вашу переменную. Если вам не нравятся красивые URL-адреса, вы всегда можете искать с помощью get_query:

     /* * Template name: Custom Search Template */ $var = get_query_var('var'); 
  • И теперь запрос

     $sql = $wpdb->prepare("SELECT * FROM myTable WHERE var = %s", $var); $results = $wpdb->get_results($sql); 

И в результатах у вас есть свои результаты, делайте с ними все, что хотите.