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

WordPressに Webhookの受信窓口を作る

More than 1 year has 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の設定を見直すなどして、再度確認すると良いでしょう。

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

Why do not you register as a user and use Qiita more conveniently?
  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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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