7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WordPressに Webhookの受信窓口を作る

Posted at

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

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

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?