在wordpress中调用json函数

时间:2010-11-02 13:26:31

标签: json wordpress wordpress-plugin

在我的wordpress插件中,我需要一个JSON选项,使用jquery加载有关自定义帖子类型的信息。此jquery调用将出现在所有用户都应该看到它的页面中。

据我所知codex我应该有一个功能:

function my_json_returning_function(){
    // get json objects here
    echo $json;
    die();
}

以及行动:

add_action('wp_ajax_my_json_action', 'my_json_returning_function');
add_action('wp_ajax_nopriv_my_json_action', 'my_json_returning_function');

全部在我的插件文件中。

然后像:

jQuery(document).ready(function($) {
    var data = {
        action: 'my_json_action',
    };

    // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
    jQuery.post(<?php echo admin_url('admin-ajax.php');?>, data, function(response) {
         alert('Got this from the server: ' + response);
    });
});

应该调用有问题的函数。

我真正的问题是我应该把所有不同的部分放在哪里 - 如果缺少某些东西。

php函数和actions钩子进入插件文件。但是javascript我更加困惑。我想把它放在插件javascript文件中,但因为我必须使用php获取管理URL,这成为一个问题。

另外,我如何确保只在特定页面中调用脚本?是否有更多的钩子和过滤器我应该适应?或者是否可以在该页面上执行短代码时使用wp_enqueue_script加载它,或者是迟到,因为我似乎需要在标题中加载它。

很多问题,但我希望你理解我的问题的基础 - 我很难将代码放在wordpress结构的正确位置。

修改 调用echo admin_url('admin-ajax.php');不是,至少在我眼里是最优雅的做法。我宁愿有一个json API,它有一个单独的url,并在ajax调用中调用它。我如何在wordpress中设置只返回json对象的页面?

1 个答案:

答案 0 :(得分:1)

上面的内容部分正确。

当使用对admin-ajax.php的调用时,你在wordpress codex页面的评论中有

// since 2.8 ajaxurl is always defined in the admin header  
// and points to admin-ajax.php

这就是它...使用javascript变量' ajaxurl '代替php调用..

所以看起来像这样

jQuery(document).ready(function($) {
var data = {
    action: 'my_json_action',
};

  // since 2.8 ajaxurl
  jQuery.post(ajaxurl, data, function(response) {
     alert('Got this from the server: ' + response);
  });
});

应该是你..只需将所有功能放在主插件文件中。 当wordpress加载时,它会产生一个名为ajaxurl的变量,然后你可以在你的脚本中使用.. :)