跳转到正文

钩子

Rudel 会在沙盒生命周期事件前后触发 WordPress 操作和过滤器。下方目录是 Rudel::hooks() 返回的内容:28 个操作和 5 个过滤器。

示例

PHP
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状态。