WordPress (тема TwentyTen): получение результатов поиска без открытия новой страницы

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

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

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

mydomain.com/?s=searchword

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

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

Буду благодарен за совет!

1 ответ

Решение

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

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) + "
    ");});

ТАК отказывается кодировать этот список бит. Извините за это.

Другие вопросы по тегам