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の設定を見直すなどして、再度確認すると良いでしょう。
また、セキュリティのしくみを備えないと外から誰でも投稿を追加できてしまうようになるため、注意しましょう。