【问题标题】:Calling json function in wordpress在wordpress中调用json函数
【发布时间】:2010-11-02 13:26:30
【问题描述】:

在我的 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 函数和动作钩子进入插件文件。但是我更困惑的javascript。我想把它放在插件 javascript 文件中,但由于我必须使用 php 获取管理 url,这成为一个问题。

另外,我如何确保仅在某个页面中调用脚本?有更多的钩子和过滤器我应该感到舒服吗?或者是否可以在该页面上执行简码时使用 wp_enqueue_script 加载它,或者是迟到了,因为我似乎需要在标题中加载它。

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

编辑: 调用 echo admin_url('admin-ajax.php');至少在我看来,这不是最优雅的方式。我宁愿有一个带有单独 url 的 json API,并在 ajax 调用中调用它。我将如何在 wordpress 中设置一个只返回 json 对象的页面?

【问题讨论】:

标签: json wordpress


【解决方案1】:

你上面的内容是部分正确的。

当使用对 admin-ajax.php 的调用时,您在 cmets 中的 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 的变量,然后您可以在脚本中使用它.. :)

【讨论】:

  • 是的,但据我了解,它仅在管理页面上有效,并且应该在常规页面上供所有人查看。所以 ajaxurl 不会被定义。但是,出于好奇,您会将 jquery 函数放在示例中的什么位置?
  • 在这种情况下,如果它是我正在创建的插件,我会将它放在主插件 .php 页面中,我通常这样做的方式是在我的插件文件夹中创建一个新的 php 文件这个文件中名为 wp-jquery.php 的结构将是我对 add_action 钩子的调用,即:wp_ajax_MYFUNCTION 也使用 wp_ajax_nopriv_MYFUNCTION 允许在前端调用文件,然后在我的主插件 .php 页面中包含那个文件。即:包括('inc/wp-jquery.php');在这里发帖可能会有所帮助geekpreneur.blogspot.com/2009/06/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多