ifttt-webhook 改良


captn3m0/ifttt-webhook · GitHub

IFTTT の Web フックが欲しくて上記の WordPress にペルソナ(w)する WebHook コードを Heroku で動かしていますが、以下の不満が発生。
・Body にフック先 URL しか指定できない
・タグが無視される

ということで、上記を解消したコードを載せておきます。

xmlrpc.php

32行目付近の switch の中身を以下のように変更します。

            switch((string)$data->name)
            {
                //neglect these sections of the request
                case 'post_status' ://publish status
                    break;
                case 'mt_keywords': //tags
                    $tags=array();
                    foreach($data->xpath('value/array/data/value/string') as $cat)
                        array_push($tags,(string)$cat);
                    $obj->tags = $tags;
                    break;

                //the passed categories are parsed into an array
                case 'categories':
                    $categories=array();
                    foreach($data->xpath('value/array/data/value/string') as $cat)
                        array_push($categories,(string)$cat);
                    $obj->categories = $categories;
                    break;

                case 'description':
                    // $url = (string)$data->value->string;
                    $description = str_replace("<br>", "\n", (string)$data->value->string);
                    $description_array = explode("\n", $description);
                    $url = $description_array[0];
                    array_shift($description_array);
                    $obj->description = trim(implode("\n", $description_array), "\n");
                    break;
                //this is used for title
                default:
                    $obj->{$data->name} = (string)$data->value->string;
            }

タグが tags パラメータとして渡されるようになります。
また、Body の一行目がフック先の URL となり、二行目以降を description パラメータとして受け取ることができるようになります。