我想首先说,我不确定这是否是发布此问题的正确位置,因此如果不是,请为我指出正确的方向。
好的,所以我有一个GitHub webhook,每当有提交评论时就会触发,而我不知道如何在我的Wordpress网站中处理它。我不会详细说明我想用它做什么,因为首先我必须收到webhook的回复。
在GitHub webhook设置中,我将负载URL设置为mywpsite.com/github.php
其中github。php是我创建的用于处理请求的文件。我想看看我是否真的收到了什么
if(!empty($_POST)) {
echo "There is something here!";
echo "</br>";
function printArray($array){
foreach ($array as $key => $value){
echo "$key => $value";
if(is_array($value)){ //If $value is an array, print it as well!
printArray($value);
}
}
}
printArray($_POST);
} else {
echo "There is nothing here :(";
} ?>
但我总是
There is nothing here :(
这意味着我总是得到一个空数组。GitHub表示,webhook已成功发送,无论我重新发送多少次,都没有收到任何信息。
我发现this question 栈内溢出问题与Java基本相同。不幸的是,我不懂足够的Java来翻译答案。我还看到了一些处理GitHub webhooks的工具,但没有一个假定与WordPress一起使用。
任何想法都将不胜感激。谢谢
SO网友:Rarst
首先,您似乎误解了PHP如何处理传入的POST请求。它只存在于webhook发出请求的实例中。如果你在浏览器中加载该页面,则不会有任何帖子数据,除非你正在提交一些。
要正确检查收到的请求,您应该记录该文件的结果,并在webhook ping之前和之后检查该文件。
其次,您还没有在WordPress中完成这项工作。在WP安装中创建自己的PHP文件作为端点是一种有问题的技术,很少使用。
如果您确实希望在WP安装中正确集成此功能,那么应该使用适当的本机端点和WP API来处理它。对于POST请求,一个语义上合适的选项是wp-admin/admin-post.php
. 但如果无法自定义远程负载(设置action
参数)并使用配件挂钩,您必须自己检查上下文。