
# نقاط التوسعة

يطلق 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` كاملة. راجع [الأتمتة](https://rudel.inline0.dev/ar/docs/features/automation).

## المرشحات

| المرشح | الوسيطات |
|--------|-----------|
| `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.
