我正在尝试从PHP脚本调用WordPress函数(get_avatar($ id)),该PHP脚本正在从排队的javascript文件的ajax引用调用中访问。(说这种负担已经使我的头受伤了)。例如,我为WordPress创建了一个插件:hmm-test。它在hmm-test.php中实现。该脚本排队一个javascript文件:test.js。在js中,我有一个xhttprequest调用,该调用将POSTS调用到hmm-test.php,该分支会基于POST变量的测试。当将hmm-test.php称为GET时,例如,使用嵌入了短代码的页面的WordPress URL,我可以调用WordPress函数。从POST分支,我还希望能够调用WordPress本机函数,并将其作为JSON有效内容的一部分返回。所以我的问题是:我可以将hmm-test.php的'POST'分支设为'wordpress-aware'以便可以在其中调用本地WP函数吗?我被卡住了-不知道还能尝试什么。我尝试尽早创建一个REST端点以通过Ajax URL进行调用,但一直遇到身份验证问题。如果这行得通,我可以花一些时间来完成它,但是我发现OAuth有点棘手。我让它为别的东西工作,但失去了它。如果有一种方法可以通过简单的POST完成,那对我的概念证明就足够了。这是完整的插件PHP脚本和排队的javascript:<?php/*Plugin Name: HMM Test*/if (strlen($_POST['action'])) { $rv["payload"] = get_avatar(108); $rv["payload"] = "This is the payload message"; $rv["status"] = 'SUCCESS'; echo json_encode($rv);} else { function hmm_test_enqueue_scripts() { wp_register_script( 'test-js', plugins_url( '/js/test.js', __FILE__ ), '', '1.0', all ); } add_action( 'wp_enqueue_scripts', 'hmm_test_enqueue_scripts' ); /* *************************************************************************** * This is the main page * ************************************************************************* */ add_shortcode( 'test-contents', 'my_test_contents' );当我将简短代码[hmm-test]放置在Wordpress页面中时,它可以很好地加载,并且得到了预期的“ Wordpress功能测试...”,用户37的正确头像图片(在此示例中为硬编码),并且单击以使事情崩溃的按钮(现在!)。单击按钮,我看到这是控制台窗口:在doTest()中test.js?ver = 1.0:40调用网址: 带有arg的https://not-my-real-url.com/wp-content/plugins/hmm-test/hmm-test.php:action =更新&用户ID = 37个test.js版本= 1.0:30的responseText: 致命错误:电话中未定义的函数get_avatar() /home4/mifydnu/public_html/wp-content/plugins/hmm-test/hmm-test.php 上线8显然,也许不足为奇,关于get_avatar()函数一无所知。这很有意义-我只是通过URL调用一些PHP脚本。脚本位于某个地方的Wordpress目录中没有任何区别。但是我为如何解决这个问题而感到困惑。
2 回答
- 2 回答
- 0 关注
- 130 浏览
添加回答
举报
0/150
提交
取消