Я пытаюсь поместить результаты поиска в div с помощью ajax. Проблема заключается в том, что я получаю сообщения об ошибках при объявлении поискового шаблона неопределенной функцией have_posts()
. Также возникает проблема с get_header()
<div id="my_search">
<form role="search" method="get" id="searchform" action="http://myurl.com/" >
<input type="text" value="" name="s" id="s" />
<input type="submit" id="searchsubmit" value="Search" />
</form>
</div>
<div id="results"></div>
<script type="text/javascript">
$(document).ready(function(){
$("#searchsubmit").click(function(e){
e.preventDefault();
var search_val=$("#s").val();
$.post('http://mysite.com/wp-content/themes/beta/search-results.php',{search_string:search_val},function(data){
if(data.length>0){
$("#results").html(data);
}
});
});
});
</script>
Мой шаблон search-results.php
. Мне интересно, может быть я не передаю результаты поиска в шаблон.
<ul>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<li><a title="Permalink to this post" href="<?php echo get_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; endif; ?>
<?php if (!have_posts()) { echo('<li>No results to show.</li>'); } ?>
</ul>
Когда вы загружаете файл шаблона напрямую таким образом, вы не загружаете среду WordPress, поэтому функции WordPress недоступны.
Вы можете либо загрузить страницу поиска в интерфейс em>, либо отфильтровать результат, например:
Или создайте функцию поиска, используя WordPress, предоставленную AJAX-функциональность (см. http://codex.wordpress.org/AJAX_in_Plugins) в плагинах .
ОТРЕДАКТИРОВАНО
Вот пример того, как я загружаю дополнительные сообщения через AJAX, которые вы можете адаптировать для создания функции поиска, если хотите. p>
Во-первых, в
functions.php
я ставлю свой javascript в очередь и локализую скрипт, чтобы передать URL AJAX, который будет обрабатывать мои запросы. WordPress AJAX используетadmin-ajax.php
для обработки всех запросов AJAX, внешнего или внутреннего интерфейса:В
scripts.js
мой javascript, который вызывает мое действие AJAX и передает переменнуюpostoffset
, чтобы я мог передать это в запрос. Также обратите внимание на использованиеWPaAjax.ajaxurl
для передачи URL, который будет обрабатывать этот запрос:В
functions.php
функция, которая обрабатывает мой AJAX-запрос, сопоставленный с действием, которое я передал в javascript выше.Ускоренная версия WordPress загружается, поэтому я могу получить доступ к большинству функций WordPress: p>
Все работает отлично! Спасибо =) =)