3

我在静态 wordpress 页面上编写了一些 php(使用 include-php-in-pages-and-posts 插件),该页面从远程服务器获取 JSON 对象。这当然只在页面加载时工作一次,然后再也不会(因为它不是 ajax)。

但是由于调用是通过自己的 php 并通过 API url 调用发送到服务器的,所以我确定不需要我的 php 并且必须有一些简单的 ajax(可能使用 jquery)我可以编写直接在我的 html wordpress 页面上,该页面从远程服务器获取 JSON 对象,所有这些都只是我在页面上直接使用的 javascript。

(我想它会使用来自远程服务器的 JSONP 格式) - 类似于:

$.get( "my_url.php_with_API-KEY_etc", data, success, "jsonp" );

或者

$.getJSONP("my_url.php_with_API-KEY_etc"

正如你所看到的,我有点迷路了。对于这个论坛来说,这也是“初学者”的问题吗?或者有人可以帮忙吗?

如果它太初学者,任何教程建议?(我已经尝试了谷歌上出现的前 3 页中的所有内容)。我觉得这是一个如此简单的请求,不应该这么难。

php代码(当我通过'included-php-on-pages-and-posts'插件使用它时只工作页面加载)是:

[php]
ob_start();
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://us01.proxy.teleduino.org/api/1.0/328.php?k={MY-API-KEY-HERE}&r=getAnalogInput&pin=14');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Your application name');
$results = curl_exec($curl_handle);
curl_close($curl_handle);
$data = json_decode($results, true);
$mess = $data['message'];
$stat = $data['status'];
$moisture = $data['response']['values'][0];
$time = $data['response']['time'];
[/php]

挣扎了很多天,阅读了数百个其他相关答案,但似乎没有答案能简单地解释我如何使用 ajax/jquery 和 js 单独为 wordpress 做到这一点。先感谢您。

4

1 回答 1

3

我会解决这个问题,创建一个短代码插件来处理这种特定情况。插件之类的include-php-in-pages-and-posts功能是 Shortcode。而且您正在尝试的内容太复杂而无法与 HTML 内容放在一起(并且各种代码修改都可能发生在 WP 可视化/文本编辑器中)。

这里有一个关于如何在 WordPress 短代码中使用 AJAX 的完整插件示例?

  • 根据您的喜好重命名短代码,例如add_shortcode( 'teleduino', array( $this, 'shortcode') );.

  • 您的实际 PHP 代码必须适应方法shortcode()get_random_posts(). 这get_random_posts()将是您get_teleduino_response()并专门负责获取响应并返回数据或错误消息。然后在shortcode()您处理结果并执行实际输出。

  • get_random_posts()Shortcode 还输出一个按钮,该按钮触发再次执行的 Ajax 调用query_rand_post()

  • 总之,您必须使这三种方法(类内的函数)适应您的逻辑。

  • 我认为您可以使用 删除ob_start并将响应发送回 jQuery wp_send_json_success( $results );,或者对结果进行一些预处理并仅发回相关信息

  • 也许代替 cUrl,你可以使用wp_remote_get()

于 2013-11-05T10:45:44.650 回答