検索は翻訳元へ

API イベント

API は、すべての書き込み操作の前後にイベントを発火するので、プラグインが反応したり、バリデーション処理をしたり、データを修正したり、処理をキャンセルしたりできます。

API イベント

API プラグイン自身のイベントがあり、変更のたびに発火します:

ページイベント

イベント発火時データ
onApiBeforePageCreateページを作成前route, header, content, template, lang
onApiPageCreatedページを作成後page, route, lang
onApiBeforePageUpdateページを更新前page, data (request body)
onApiPageUpdatedページを更新後page
onApiBeforePageDeleteページを削除前page, lang
onApiPageDeletedページを削除後route, lang
onApiPageMovedページを移動後page, old_route, new_route
onApiBeforePageTranslate翻訳作成前page, lang, header, content
onApiPageTranslated翻訳作成後page, route, lang

メディアイベント

イベント発火時データ
onApiBeforeMediaUpload各ファイルのアップロード前page, filename, type, size
onApiMediaUploadedアップロード完了後page, filenames
onApiBeforeMediaDeleteメディア削除前page, filename
onApiMediaDeletedメディア削除後page, filename

構成、ユーザー、GPM イベント

イベント発火時データ
onApiConfigUpdatedconfig の保存後scope, data
onApiUserCreatedユーザー作成後user
onApiUserUpdatedユーザー更新後user
onApiBeforeUserDeleteユーザー削除前user
onApiUserDeletedユーザー削除後username
onApiBeforePackageInstallパッケージインストール前package, type
onApiPackageInstalledインストール完了後package, type

Admin 互換イベント(onAdmin*

API は、 Grav Admin プラグインが発火するイベントと同時に発火します。
これにより、 Admin イベント(SEO Magic, Auto Date, Mega Frontmatter, などの)Admin プラグインのイベントに登録した、サードパーティ製プラグインが、Admin の UI からの変更か API からの変更かに関わらず、正しく動くことを保証します。

両方のイベントは、 – Admin イベントがまず発火し、それから API イベントが発火するという形で、すべての操作で発火します。

イベント発火時データ
onAdminCreatePageFrontmatterページ作成(保存前)header, data
onAdminSave保存前(ページ、ユーザー、config)object (by reference), page
onAdminAfterSave保存後object, page
onAdminAfterDeleteページ削除後object, page
onAdminAfterSaveAsページ移動後・名前変更後path
onAdminAfterAddMediaメディアアップロード後object, page
onAdminAfterDelMediaメディア削除後object, page, media, filename

イベントの順序例

ページの作成処理において、イベントは次の順序で発火します:

  1. onApiBeforePageCreate — API のイベント前
  2. onAdminCreatePageFrontmatter — Admin フロントマターインジェクション
  3. onAdminSave — Admin 保存前 (プラグインがページを修正できます)
  4. onAdminAfterSave — Admin 保存後 (インデックス操作、通知)
  5. onApiPageCreated — API のイベント後 (webhook のトリガー)

自作プラグインでのイベントの使い方

public static function getSubscribedEvents(): array
{
    return [
        'onApiPageCreated' => ['onPageChanged', 0],
        'onApiPageUpdated' => ['onPageChanged', 0],
        'onApiPageDeleted' => ['onPageChanged', 0],
    ];
}

public function onPageChanged(Event $event): void
{
    // Rebuild search index, clear CDN cache, etc.
    $page = $event['page'] ?? null;
    $route = $event['route'] ?? $page?->route();

    $this->rebuildIndex($route);
}

ルーティング登録

プラグインから、カスタムのエンドポイントを持つ API を拡張できます:

イベント発火時データ
onApiRegisterRoutesルーティング初期化中routes (ApiRouteCollector)

詳細は、 プラグイン API 統合 ガイドを参照してください。