【问题标题】:Fatal error when getting the results using jQuery and Wordpress使用 jQuery 和 Wordpress 获取结果时出现致命错误
【发布时间】:2011-04-18 04:15:29
【问题描述】:

我正在尝试使用 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; ?>

【问题讨论】:

    标签: php jquery ajax wordpress


    【解决方案1】:

    如果在调用任何 WP 函数之前将其添加到 reloadhomeposts.php 文件中,您应该没问题(关于您缺少的 WP 功能):

    require('../../../wp-blog-header.php');
    // ... WP_Query call and loop
    

    【讨论】:

    • 顺便说一句,如果你只是想通过 AJAX 重新加载当前页面的帖子,为什么不调用当前 url 并提取你想要“刷新”的 div 的内容呢?
    【解决方案2】:

    您可能会收到该错误,因为您是直接调用主题文件

    因为您没有包含页面的页眉和页脚。

    轻松解决:

    确保页面按需要加载。如果您不想包含标头和所有垃圾,您可以使用 jQuery 加载片段,执行以下操作:

      .load('wp-content/themes/theme/reloadhomeposts.php #postWrapper', function() {
                 $(this).removeClass('loading') 
        });
    

    【讨论】:

    • 如何将这些函数添加到文件中?
    • 有哪些功能?你应该确保你的文件在没有 JS 的情况下正确加载
    • 使用 include(myfile) 来实现
    • 那么你应该去参加比赛了。您得到的错误是 PHP 编译错误,与 jQuery 无关
    【解决方案3】:

    您的 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 内部流程。

    【讨论】:

    • 您好,感谢您的回答。但是,我应该调用哪些操作或函数?
    • 这取决于您,您必须创建一个操作,例如操作 'getallpost' ,然后当您进行 ajax 调用时,将其添加到 url:?action=getallpost
    • 对于功能,您必须创建它并为它选择一个合适的名称!就是这样。
    猜你喜欢
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多