بناء تكامل مسجل النطاقات المخصص
يستخدم إضافة Domain Seller نمط سجل التكامل (Integration Registry). كل مسجل (registrar) هو فئة PHP تطبق واجهة Domain_Selling_Capability وتسجل نفسها عبر خطاف الحدث (action hook) المسمى wu_domain_seller_register_capabilities.
يوضح هذا الدليل كيفية توصيل مسجل مخصص.
الواجهة (The interface)
يجب أن تطبق فئتك (class) واجهة WP_Ultimo\Integrations\Capabilities\Domain_Selling_Capability وتُورث (extend) من WP_Ultimo\Integrations\Base_Capability_Module.
الأساليب المطلوبة:
namespace My\Plugin\Capabilities;
use WP_Ultimo\Integrations\Base_Capability_Module;
use WP_Ultimo\Integrations\Capabilities\Domain_Selling_Capability;
class My_Registrar_Selling extends Base_Capability_Module implements Domain_Selling_Capability {
// --- أساليب الهوية المطلوبة (من Base_Capability_Module) ---
public function get_capability_id(): string {
return 'domain-selling'; // يجب أن تكون دائمًا 'domain-selling'
}
public function get_title(): string {
return __('Domain Selling', 'my-plugin');
}
public function get_explainer_lines(): array {
return [
'will' => [__('Enable domain registration via My Registrar.', 'my-plugin')],
'will_not' => [],
];
}
// --- الأساليب الأساسية المطلوبة (من Domain_Selling_Capability) ---
/** جلب جميع امتدادات النطاقات (TLDs) وتكاليف الجملة. */
public function sync_tlds(): array { ... }
/** التحقق من توفر اسم النطاق $domain_name عبر امتدادات $tlds. */
public function search_domains(string $domain_name, array $tlds = []): array { ... }
/** الحصول على سعر الجملة لامتداد نطاق معين (TLD) لعدد سنوات محدد. */
public function get_domain_pricing(string $tld, int $years = 1): array { ... }
/** تسجيل نطاق. يُرجع ['success' => true, 'expiry_date' => '...'] في حالة النجاح. */
public function register_domain(string $domain_name, array $registrant_info, int $years = 1): array { ... }
/** تجديد نطاق لعدد سنوات محدد. */
public function renew_domain(string $domain_name, int $years = 1): array { ... }
/** الحصول على معلومات النطاق، وتاريخ الانتهاء، وأسماء الخوادم (nameservers). */
public function get_domain_info(string $domain_name): array { ... }
/** اختبار بيانات اعتماد API والاتصال. */
public function test_connection(): array { ... }
}
الأساليب الاختيارية (Optional methods)
قم بتطبيق هذه الأساليب لفتح ميزات إضافية. يكتشف الإضافة الدعم عبر method_exists():
| الأسلوب (Method) | الميزة التي يفتحها (Unlocks) |
|---|---|
supports_whois_privacy(): bool | خيار خصوصية WHOIS في إعدادات المنتج |
enable_whois_privacy(string $domain_name): array | تفعيل الخصوصية تلقائيًا عند التسجيل |
get_dns_records(string $domain_name): array | علامة تبويب عرض DNS للعميل |
add_dns_record(string $domain_name, array $record_data): array | يمكن للعميل إضافة سجلات DNS |
update_dns_record(string $domain, string $record_id, array $record_data): array | يمكن للعميل تعديل سجلات DNS |
delete_dns_record(string $domain, string $record_id, array $data): array | يمكن للعميل حذف سجلات DNS |
update_nameservers(string $domain_name, array $nameservers): array | إدارة أسماء الخوادم (Nameserver management) |
get_epp_code(string $domain_name): array | نقل النطاق (خارجياً) |
transfer_domain(string $domain, string $auth_code, array $registrant_info, array $options): array | نقل النطاق (داخلياً) |
اتفاقية قيمة الإرجاع (Return value convention)
تُرجع جميع الأساليب مصفوفة (array) تحتوي على مفتاح success كحد أدنى:
// النجاح
return ['success' => true, 'data' => [...]];
// الفشل
return ['success' => false, 'message' => 'خطأ يمكن قراءته بواسطة الإنسان'];
تسجيل الإضافة (Registering your capability)
سجّل فئتك باستخدام خطاف الحدث wu_domain_seller_register_capabilities:
add_action('wu_domain_seller_register_capabilities', function(\WP_Ultimo\Integrations\Integration_Registry $registry) {
$registry->add_capability('my-registrar', new \My\Plugin\Capabilities\My_Registrar_Selling());
});
الوسيط الأول في add_capability() هو معرّف المزوّد (provider ID) — وهو اسم (slug) بأحرف صغيرة يُستخدم لتحديد مسجلك في الإعدادات، وتكوين المنتج، وقنوات السجلات. استخدم شيئًا فريدًا (مثل اسم شركتك).