NExT Staatic Actions
Staatic の公開(静的ジェネレート)完了時にメール通知・Cloudflareキャッシュパージ・Webhook通知を実行し、スケジュールに沿って自動公開も行います。
Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/atsushia/next-staatic-actions/releases/download/1.8.0/next-staatic-actions-1.8.0.zip(English README: README.en.md)
Staatic(静的サイトジェネレーター)の公開(デプロイ)が完了した際に、 メール通知・Cloudflareキャッシュパージ・Webhook通知を自動実行する WordPress プラグインです。 また、指定した日時・毎日・毎週指定曜日のスケジュールで公開そのものを自動実行することもできます。
動作要件
- WordPress 5.0 以上
- PHP 7.4 以上
- Staatic プラグインが有効化されていること
インストール
- このリポジトリを
wp-content/plugins/NExT-Staatic-Actionsに配置する - WordPress管理画面のプラグイン一覧から「NExT Staatic Actions」を有効化する
- 管理メニューの Staatic > Actions から各種通知設定を行う
機能
Staatic の公開が成功または失敗した際に、以下を個別に有効・無効化できます。
| 機能 | 内容 |
|---|---|
| メール通知 | 複数の宛先へ、件名・本文をテンプレートで指定して送信 |
| Cloudflare キャッシュパージ | Zone ID / API トークンを使い Purge Cache API を呼び出す |
| Webhook 通知 | 任意のURLへHTTPリクエスト(メソッド・ヘッダー・ボディを設定可能) |
メール通知・Webhook通知には「保存済みの設定でテスト送信」ボタンがあり、実際に Staatic の公開を待たずに その場で送信結果(成功/失敗とステータス)を確認できます(有効/無効の設定に関わらず動作します)。
Cloudflare キャッシュパージには、Zone ID・APIトークン保存後にその場で確認できる2つのボタンがあります。
- 接続確認 — Cloudflare APIに接続し、Zone ID・APIトークンが有効かを確認(キャッシュはパージしません)
- 今すぐパージ — 確認ダイアログの後、保存済みの設定で実際にキャッシュを全パージします
メール・Webhookのテンプレートでは以下のプレースホルダーが利用できます。
{{status}} {{publication_id}} {{destination_url}} {{entry_url}}
{{date_created}} {{date_finished}} {{num_urls_crawled}} {{num_results_deployed}}
{{user_id}} {{user_login}} {{site_url}} {{admin_publication_url}} {{failure_message}}
スケジュール公開
Staatic の管理メニュー配下「スケジュール公開」専用ページ(Actionsとは別ページ)で、以下の頻度を選んで 自動公開を有効化できます。時刻はサイトのタイムゾーンで判定されます。
| 頻度 | 内容 |
|---|---|
| 指定日時に1回だけ実行 | 指定した日付・時刻に1回だけ公開を実行(過去の日時は無視されます) |
| 毎日実行 | 毎日指定した時刻に公開を実行 |
| 毎週指定曜日に実行 | 選択した曜日の指定時刻にのみ公開を実行 |
このページのみ編集者(Editor)以上の権限で操作できます。 メール・Cloudflare・Webhookの設定を含む
「Actions」ページは引き続き管理者(manage_options)のみがアクセスできます。編集者はスケジュールの
値以外の設定を閲覧・変更することはできません(保存時、それ以外の設定値はデータベースに保存されている
現在の値がそのまま維持されます)。
編集者への操作許可自体は、管理者が Actions → 詳細設定タブのチェックボックスでON/OFFできます (デフォルトは許可)。オフにすると編集者は次回のスケジュール公開ページへのアクセス時に権限エラーになります。
WP-Cron(next_staatic_actions_scheduled_publish)から Staatic 自身の公開トリガーである
do_action('staatic_publish') を呼び出す仕組みで、設定を保存すると自動的にスケジュールが再設定されます。
検知の仕組み
Staatic 自体には「公開完了」「公開失敗」を通知する専用フックが存在しないため、Staaticの内部タスクフックを 組み合わせて検知しています。
- 成功:
staatic_publication_task_afterフックで、パイプライン最後のタスクであるFinishTaskを判定 - 失敗:
staatic_publication_task_anyで公開中のPublicationオブジェクトの参照を保持し、shutdownアクションでステータスがfailedになっていないかを確認するワークアラウンドで検知
いずれもバックグラウンド公開(管理画面 / WP-Cron)・WP-CLI公開の両方で動作します。詳細設計は SPEC.md を参照してください。
拡張
本プラグインは独自のアクションフックを発火します。メール・Cloudflare・Webhookの3機能もこのフックの 利用者として実装されているため、他のコードから同様に処理を追加できます。
add_action('next_staatic_actions_publish_succeeded', function (array $context) {
// $context には publication_id / status / destination_url などが含まれる
});
add_action('next_staatic_actions_publish_failed', function (array $context) {
// ...
});
開発
composer install
# コーディング規約チェック / 自動修正
composer run phpcs
composer run phpcbf
# テスト(Unit のみ、WordPress不要)
composer run test:unit
# テスト(Integration含む全体。WordPressテストライブラリが必要)
bash bin/install-wp-tests.sh wordpress_test root root 127.0.0.1 latest
WP_TESTS_DIR=/tmp/wordpress-tests-lib vendor/bin/phpunit --bootstrap tests/phpunit/bootstrap.php
main への push・Pull Request で GitHub Actions が phpcs・PHPUnit(WP最新+1世代前 × PHP 7.4/8.3/8.4)・
Plugin Check を実行します。0.0.0 形式のタグを push すると、CIが全て通過した場合のみ配布用zipを
ビルドして GitHub Release を自動作成します(プラグインヘッダーの Version とタグが一致している必要があります)。
アンインストール
プラグイン削除時に uninstall.php が実行され、設定オプション(next_staatic_actions_settings)を削除します。
ライセンス
GPLv2 or later
Releases
9 releases. Each count is every asset in that release; expand a row for the breakdown.