如何处理GitHub网络挂钩帖子请求?

时间:2016-11-30 作者:jetgo

我想首先说,我不确定这是否是发布此问题的正确位置,因此如果不是,请为我指出正确的方向。

好的,所以我有一个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一起使用。

任何想法都将不胜感激。谢谢

1 个回复
SO网友:Rarst

首先,您似乎误解了PHP如何处理传入的POST请求。它只存在于webhook发出请求的实例中。如果在浏览器中加载该页面,则不会有任何帖子数据,除非正在提交一些。

要正确检查收到的请求,您应该记录该文件的结果,并在webhook ping之前和之后检查该文件。

其次,您还没有在WordPress中完成这项工作。在WP安装中创建自己的PHP文件作为端点是一种有问题的技术,很少使用。

如果您确实希望在WP安装中正确集成此功能,那么应该使用适当的本机端点和WP API来处理它。对于POST请求,一个语义上合适的选项是wp-admin/admin-post.php. 但如果无法自定义远程负载(设置action 参数)并使用配件挂钩,您必须自己检查上下文。

相关推荐

GitHub.md文件到WordPress页面

我看到一些网站在GitHub存储库中管理其信息/文档。这允许每个人在出现问题或过时时提出问题,通过分叉/请求推送等方式提出更改。是否可以将WordPress链接到GitHub存储库?预期行为:每。存储库中的md文件在WordPress中成为一个页面(或帖子)(理想情况下保持降价布局)。在GitHub存储库中进行更改时,更改应立即反映在WordPress中。