钩子
Rudel 会在沙盒生命周期事件前后触发 WordPress 操作和过滤器。下方目录是 Rudel::hooks() 返回的内容:28 个操作和 5 个过滤器。
示例
add_action(
'rudel_after_environment_create',
function ( \Rudel\Environment $environment, array $context ): void {
error_log( 'Created Rudel environment ' . $environment->id );
},
10,
2
);
大多数 before 和 failed 操作都会接收一个 $context 数组。对于沙盒生命周期钩子,该数组包含 environment(创建时则包含 name、options 和 environments_dir);failed 操作还会将捕获的 Throwable 作为 $error 接收。
沙盒生命周期操作
| 操作 | 参数 |
|---|---|
rudel_before_environment_create |
$context |
rudel_after_environment_create |
$environment, $context |
rudel_environment_create_failed |
$context, $error |
rudel_before_environment_update |
$context |
rudel_after_environment_update |
$environment, $context |
rudel_environment_update_failed |
$context, $error |
rudel_before_environment_destroy |
$context |
rudel_after_environment_destroy |
$context |
rudel_environment_destroy_failed |
$context, $error |
rudel_before_environment_replace_state |
$context |
rudel_after_environment_replace_state |
$result, $context |
rudel_environment_replace_state_failed |
$context, $error |
这三个 replace_state 操作属于 EnvironmentManager::replace_environment_state(),没有任何 Rudel 命令会调用它们。
快照操作
| 操作 | 参数 |
|---|---|
rudel_before_recovery_point_create |
$context |
rudel_after_recovery_point_create |
$context, $meta |
rudel_before_recovery_point_restore |
$context |
rudel_after_recovery_point_restore |
$context |
rudel_before_recovery_point_delete |
$context |
rudel_after_recovery_point_delete |
$context |
$context包含environment、kind(snapshot)、name和path。这些操作也会在snapshot别名下触发,例如rudel_after_snapshot_create;失败时会触发rudel_failed_recovery_point_{create|restore|delete}和rudel_failed_snapshot_{create|restore|delete},并附带$context和错误信息。这些别名不在目录中。
清理操作
| 操作 | 参数 |
|---|---|
rudel_before_environment_cleanup |
$options |
rudel_after_environment_cleanup |
$result, $options |
rudel_before_environment_cleanup_merged |
$options |
rudel_after_environment_cleanup_merged |
$result, $options |
$result包含removed、skipped、errors和reasons。
Git推送操作
| 操作 | 参数 |
|---|---|
rudel_before_environment_push |
$context |
rudel_after_environment_push |
$sha, $context |
rudel_environment_push_failed |
$context, $error |
这些操作会为Rudel::push()触发。$context包含environment、remote、message和subdir。wp rudel push命令会直接推送,不会触发这些操作。
自动化操作
| 操作 | 参数 |
|---|---|
rudel_before_automation_cleanup |
$config |
rudel_after_automation_cleanup |
$result, $config |
rudel_after_automation_expiring_environments |
$result, $config |
$config是完整的rudel_config数组。请参阅自动化。
过滤器
| 过滤器 | 参数 |
|---|---|
rudel_environment_create_options |
$options, $name, $manager |
rudel_environment_clone_source |
$clone_source, $host_url, $db_cloned, $themes_cloned, $plugins_cloned, $uploads_cloned, $extra |
rudel_environment_cleanup_options |
$options, $repository |
rudel_environment_cleanup_merged_options |
$options, $repository |
rudel_environment_db_dropin_contents |
$contents, $context |
rudel_environment_create_options可以在Rudel执行前更改任何创建调用的选项。rudel_environment_clone_source会过滤从主机创建的沙盒中存储的克隆元数据。rudel_environment_db_dropin_contents仅适用于多站点子站点环境使用的db.php替换文件;当前版本只会创建覆盖层沙盒,它们不会生成此文件。
过滤器用于调整策略,而不是替换Rudel的存储模型。运行时身份、表前缀和工作树元数据仍是由数据库支持的Rudel状态。