WordPress (тема TwentyTen): получение результатов поиска без открытия новой страницы - PullRequest
0 голосов
/ 14 июля 2011

Я работаю на сайте WordPress.

Я хочу загрузить результаты поиска на открытую в данный момент страницу, используя методы AJAX. Чтобы это сделать, мне нужно получить вывод кода PHP, который выполняет поиск, не открывая новую страницу.

Обычно после того, как вы набираете поисковое слово, WordPress открывает новую страницу с URL-адресом, подобным следующему:

mydomain.com /? S = 1007 * Поиск слова *

Вывод кода PHP, который выполняет поиск, показан в div #container этой страницы.

Вопрос: как получить результаты поиска, не открывая новую страницу, чтобы я мог загрузить их с помощью jQuery на страницу, которая открыта в данный момент?

Буду признателен за ваш совет!

1 Ответ

2 голосов
/ 14 июля 2011

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

http://wordpress.org/extend/plugins/threewp-ajax-search/screenshots/

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

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

  1. Используйте ajax-вызов jQuery для запроса страницы поиска.

    $.ajax({
                    async: true,
                    data: $dataToSend,
                    datatype: 'xml',
                    beforeSend: function() {
                        console.log('rq');
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        console.log('error');
                    },
                    success: function(xml, textstatus, jqXHR) {
                        //Process Response Data
                    },          
                    timeout: 10000,
                    type: 'POST',
                    url: 'http://' + document.location.host + '/search'     
            });
    
  2. Обработайте ответ и отберите интересующие вас данные. http://www.switchonthecode.com/tutorials/xml-parsing-with-jquery

    $ (xml) .find ('div [class = "post"]'). Each (function () { $ ("# currentPage"). append ($ (this) + "
    "); });

SO отказывается кодировать этот бит списка. Сожалею об этом.

...