【发布时间】: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 对象的页面?
【问题讨论】:
-
这个问题has been answered on the WordPress Stack Exchange。诀窍是您可以使用
wp_localize_script()将 PHP 配置值发送到 Javascript。