Intereting Posts
получать мета значение из запроса страницы Проблема XMLRPC … Не могу войти в мой собственный блог через приложение для Android Разрывы строк не отображаются должным образом Изменения Customizer.js не распознаются Как я могу написать правило перезаписи, чтобы отобразить многоуровневое? Функция списка подписки Плагин jQuery не загружается admin-ajax.php возвращает 0. Как его отладить и исправить? Использовать страницу в качестве шаблона для настраиваемого типа сообщения WP e-commerce: как выбрать метод расчета стоимости доставки в соответствии с местом доставки Обновление темы WP вызывает проблемы с CSS темы Как иметь дело с равными и схожими аргументами для функции? Импортированный контент не отображается во внешнем интерфейсе Как удалить комментаторов возможность добавлять гиперссылки к комментариям? Странные символы появились в заголовке

Результат поиска с другого сайта WordPress

Мне интересно, можно ли получить результат поиска с веб-сайта A и отобразить его на веб-сайте B, предполагая, что оба веб-сайта не являются частью нескольких?

Solutions Collecting From Web of "Результат поиска с другого сайта WordPress"

Да, это будет возможно.

Я бы посоветовал интегрировать поиск по сайту в WordPress с помощью поиска Google, а затем вы можете указать сайт (ы) (в вашем случае сайт B), который вы хотите искать, когда пользователи выполняют поиск на вашем текущем сайте (сайт A)

Вот увлекательный и простой учебник по учебному пособию по настройке всего: http://www.wpbeginner.com/wp-tutorials/how-to-add-google-search-in-a-wordpress-site/

Удачи 🙂

Когда у вас есть доступ к обоим сайтам. Вы можете создать URL-адрес канала передачи данных, который будет возвращать данные JSON .

Плагин, который обеспечивает передачу данных (установка на сайте A)

 <?php /* Plugin Name: WPSE Search Data Feed Plugin URI: http://wordpress.stackexchange.com Description: Provides interface to search and get result in JSON data Author: Sisir Version: 1.0 Author URI: http://developerpage.net */ add_action('wp_ajax_nopriv_wpse144893_search', 'wpse144893_search_data'); // allow logged out users add_action('wp_ajax_wpse144893_search', 'wpse144893_search_data'); // allow logged in users function wpse144893_search_data(){ $errors = array(); $data = array( 'status' => 'error', 'message' => '', 'result' => array() ); if(!isset($_REQUEST['term']) || empty($_REQUEST['term'])) $errors[] = 'No search term given!'; if(!isset($_REQUEST['limit']) || empty($_REQUEST['limit'])) $limit = 10; else $limit = (int) $_REQUEST['limit']; if(empty($errors)){ $term = sanitize_text_field($_REQUEST['term']); // setup query data $args = array( 'posts_per_page' => $limit, 's' => $term ); $query = new WP_Query($args); // run query $results = array(); if($query->have_posts()): while($query->have_posts()): $query->the_post(); $post_item = array( 'title' => get_the_title(), 'excerpt' => get_the_excerpt(), 'permalink' => get_permalink() ); $results[] = $post_item; endwhile; $data['status'] = 'success'; $data['message'] = 'Results found!'; $data['result'] = $results; else: $errors[] = 'No post found!'; $data['message'] = $errors; endif; } echo json_encode($data); // print json die(); // kill the script } 

Ссылка на Gist

Возвращенный результат Будет что-то вроде этого:

 { "status":"success", "message":"Results found!", "result":[ { "title":"Deadly car bomb blasts hit Shia areas in Baghdad", "excerpt":"Several car bombs have exploded across the Iraqi capital Baghdad, killing at least 20 people and injuring scores more, officials say. The attacks are reported to have targeted mainly Shia areas in the city. Security sources told the BBC three explosions rocked the neighbourhoods of Ourfally, Kiyara and Falah Street in the eastern suburb of […]", "permalink":"http:\/\/localhost\/l\/blog\/deadly-car-bomb-blasts-hit-shia-areas-in-baghdad\/"} ] } 

объяснение

Мы создаем фид данных, используя ajax api. Нет необходимости вызывать файл admin-ajax.php с помощью ajax. Мы можем использовать простой HTTP_API для этого или CURL. Конечной точкой нашего URL для получения результатов поиска является http://<your_domain.com>/wp-admin/admin-ajax.php?action=wpse144893_search

Как видно из кода проверки. Вы передаете поисковый запрос в качестве ключевого слова. Вы также можете передать limit который не требуется, а по умолчанию – 10 . Вот как будет выглядеть поисковый запрос.

 http://<your_domain.com>/wp-admin/admin-ajax.php?action=wpse144893_search&term=<my_search>&limit=50 

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

Возможные улучшения для плагина

  1. Пользовательский / Pretty url endpoint через rewrite api.
  2. Защита конечной точки с помощью секретного ключа.
  3. Поддержка XML. Мне больше нравится JSON но вы можете вернуть XML если вам это нравится.

Как позвонить с сайта B

Ну, как вы видите, URL-адрес довольно прост. Таким образом, вы можете использовать HTTP_API или php curl для получения результата. Ниже приведен пример того, как это можно сделать с помощью HTTP_API

 $url = 'http://<your_domain.com>/wp-admin/admin-ajax.php'; $args = array( 'action' => 'wpse144893_search', 'term' => 'My Search Term', 'limit' => 50 ); $url = add_query_arg($args, $url); $response = wp_remote_get($url); if(!is_wp_error($response)){ // additional checks can be done here for correct http code. $body = wp_remote_retrieve_body($response); // retrieve the response body $result = json_decode($result); // now we get the result object :) }else{ // handle error } 

Теперь вы можете обработать объект $result чтобы получить результат поиска.

Следующий код загрузит результаты поиска для JavaScript с моего сайта

 $response = wp_remote_get( "http://ahrengot.com/?s=javascript" ); $body = wp_remote_retrieve_body( $response ); echo $body; 

Это возвращает HTML как строку, которую вы можете использовать RegEx или искать или заменять свой путь, если вы хотите изолировать результаты поиска. Однако я бы рекомендовал сделать это с помощью jQuery вместо этого по двум причинам:

  1. Приведенный выше пример, скорее всего, замедлит скорость загрузки вашей страницы, так как он должен полностью загрузить другую страницу, прежде чем он сможет отправить HTML-код клиенту. Загрузка с помощью AJAX будет отображать вашу страницу мгновенно, а затем загружать результаты в секунду. Это намного приятнее.
  2. jQuery будет обрабатывать также синтаксический анализ строк.

Вот такой же пример с jQuery

 $("#you-container-element").load( "http://ahrengot.com/?s=javascript #container-element" ); 

#container-element – это элемент на странице ahrengot.com/the remote, содержащий результаты поиска.