我正在尝试使用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; ?>
答案 0 :(得分:1)
如果在调用任何WP函数之前将其添加到 reloadhomeposts.php 文件中,那么你应该没问题(关于你缺少的WP功能):
require('../../../wp-blog-header.php');
// ... WP_Query call and loop
答案 1 :(得分:0)
您可能会收到该错误,因为您直接调用主题文件
OR
因为您没有包含页面的页眉和页脚。
轻松解决:
确保页面按需加载。如果你不想包含标题和所有垃圾,你可以用jQuery加载一个片段做这样的事情:
.load('wp-content/themes/theme/reloadhomeposts.php #postWrapper', function() {
$(this).removeClass('loading')
});
答案 2 :(得分:0)
您的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
}
有点复杂,但您正在使用WP内部进程进行AJAX。