我正在尝试使用jQuery重新加载新帖子。据我所知,我不能在页面内重新加载一个div的内容,所以我重新加载一个文件到那个div(这是正确的吗?)
问题是我加载的文件给了我一个致命错误:调用未定义函数wp_head()如何在主题目录中实现新创建的文件的功能以正常工作?
这是我的jQuery
<script language="JavaScript">
$(function() {
var SANAjax = function(){
$('#reservationdetails').empty().addClass('loading')
.load('wp-content/themes/theme/reloadhomeposts.php', function() {
$(this).removeClass('loading')
});
}
setInterval(SANAjax, 15000 );
});
</script>
<div id="reservationdetails"></div>
这就是我在reloadhomeposts.php(我已经删除了内容)
<?php $recent = new WP_Query("cat=3,4,5&showposts=10"); while($recent->have_posts()) : $recent->the_post();?>
.
.
.
<?php endwhile; ?>
如果您在调用任何WP函数之前将此添加到reloadhomeposts.php文件中,您应该会很好(关于您缺少的WP功能):
require('../../../wp-blog-header.php');
// ... WP_Query call and loop
你可能会得到这个错误,因为你直接调用主题文件
或
,因为你没有包含页眉和页脚。
容易解决:
确保页面按需要加载。如果你不想包含标题和所有的垃圾,你可以用jQuery加载一个片段,这样做:
.load('wp-content/themes/theme/reloadhomeposts.php #postWrapper', function() {
$(this).removeClass('loading')
});
您的AJAX可以调用/wp-admin/admin-ajax.php,带有一个动作参数(以及任何您想要的),然后在插件文件中您可以将您的AJAX调用关联到:
add_action('wp_ajax_YOUR_ACTION_NAME', 'the_function_to_call');
add_action('wp_ajax_no_priv_YOUR_ACTION_NAME', 'the_function_to_call');
YOUR_ACTION_NAME必须是action参数的值。第一个是公共ajax请求,意味着你可以调用它,即使你没有登录第二个,需要你登录。
那么the_function_to_call函数可以包含任何东西,它将工作!
function the_function_to_call () {
include (TEMPLATEPATH . '/reloadhomeposts.php');
die(); // prevent string 1 to appear after
}
有点复杂,但你正在使用的是AJAX的WP内部过程