Help us understand the problem. What is going on with this article?

WordPressに Webhookの受信窓口を作る

More than 3 years have passed since last update.

Webhookを利用して、WordPressで新しい投稿を作成するためのプログラム。

まずは、テーマの functions.phpかまたは、プラグインなどを作成して、新しいアクションフックを定義します。

add_action('wp_ajax_hoge', 'hoge');
add_action('wp_ajax_nopriv_hoge', 'hoge');
function hoge() {
// ここに処理を書く
}

これで、次の URLで Webhookを受信することができるようになります。

https://example.com/wp-admin/admin-ajax.php?action=hoge

actionパラメーターに、「wp_ajax_xxx」の「xxx」の部分を当てはめます。

JSONを処理する

Webhookで送信される内容自体は php://inputを読み込むことで処理できます。

$body = file_get_contents("php://input");
$json = json_decode($body);

後は、このJSONの内容を使って、wp_insert_post等で新しい投稿を作成する事ができます。

$post_id = wp_insert_post( array(
    'post_type'    => 'post',
    'post_title'   => $json->xxx,
    'post_status'  => 'publish',
    'post_content' => $json->xxx,
    ) );
    if ( $post_id ) {
        update_post_meta( $post_id, 'custom field', $json->xxx );
    }
));

正常に送信できない場合は、WAF等をチェック

テストをしてみると、うまく送信できない場合などがあります。この場合、Webhook側に 403エラーなどが通知されています。これは、WAFのセキュリティ設定によってはねられていたりします。サーバー側の WAFの設定を見直すなどして、再度確認すると良いでしょう。

また、セキュリティのしくみを備えないと外から誰でも投稿を追加できてしまうようになるため、注意しましょう。

seltzer
株式会社エイチツーオー・スペース 代表取締役 「ちゃんとWeb」をコーポレートテーマに、Web標準に準拠したメンテナンスしやすいWebサイトを「ちゃんと」作ることを目指したWeb制作会社。 WordPressを利用したサイト制作や、スマートデバイス向けサイトの制作、PHPやJavaScriptによる開発を得意とする。 また、CSS Niteや Word Campでの講演や著書などを通じ、クリエイタ
https://h2o-space.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away