使用jQuery和Wordpress获取结果时出现致命错误


Fatal error when getting the results using jQuery and Wordpress

我正在尝试使用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内部过程