beta

WordPressでCloudflare Pagesのデプロイフックを使う方法

WordPressでCloudflare Pagesのデプロイフックを使うコードをまとめました。WordPressをヘッドレスCMSとして使っている場合に、追加すると便利です。

公開日:2021年8月19日

管理画面にデプロイボタンを設置

CloudflareにデプロイフックAPIが追加されました。

Introducing Deploy Hooks for Cloudflare Pages

これでCloudflare APIにPOSTしてやれば、デプロイが自動開始されるようになります。

いくつかのサイトで、WordPressをヘッドレスCMSとして使ってみているので、今回はWordPressの管理画面(wp-admin)内にデプロイボタンを設置して、APIを叩いてみます。

コード

まず先にコードから。cURL関数を使っているだけで、エラーハンドリングもしていない簡易版ですが、一応動きます。

// function.php

add_action( 'admin_menu', 'register_cf_deploy_menu_page' );
function register_cf_deploy_menu_page(){
    add_menu_page( 'CFデプロイ', 'CFデプロイ',
    'manage_options', 'cf_deploy', 'cf_deploy_page', '', 1000 );
}

function cf_deploy_page(){
    echo "<h2>Cloudflare Pagesへデプロイ</h2>";   
    $curl=curl_init("デプロイフックのAPI URL");
    curl_setopt($curl,CURLOPT_POST, TRUE);
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($POST_DATA));
    curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($curl,CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($curl,CURLOPT_COOKIEJAR,      'cookie');
    curl_setopt($curl,CURLOPT_COOKIEFILE,     'tmp');
    curl_setopt($curl,CURLOPT_FOLLOWLOCATION, TRUE);

    $output= curl_exec($curl);    
    echo "デプロイフックを送信しました。";  
}

コードの解説

APIとかに慣れている方なら解説は不要だと思いますが、一応軽く解説していきます。

まず、管理画面に何かを追加するには、使っているテーマのfunction.phpに設定を書きます。追加するコードは、

  1. 追加するページの処理を指定する関数(cf_deploy_page)
  2. メニューを追加する関数(register_cf_deploy_menu_page)

の二つで構成されます。

add_action

関数の設定ができたら、「add_action」関数で引数に、admin_menuと、作成した関数名を入れること、メニューボタンの追加とクリックした時の動作を規定できます。

register_cf_deploy_menu_page

メニューのラベル、どのページを表示するかなどを指定するだけの関数です。最後の1000については、メニューの順番で、大きいほど下にいきます。

cf_deploy_page

実際にAPIを叩いているのはこの関数です。

APIを叩いた後に「デプロイフックを送信しました。」と表示されるようにしてあります。


このコードを追加するだけで、WordPressにCloudflareのデプロイボタンを追加できます。

Author

Koji Kadoma
Member of codit.work

新着ノート

新着コード