דלג לתוכן הראשי

בניית אינטגרציה של רשם דומיינים מותאם אישית

התוסף Domain Seller משתמש בדפוס Integration Registry (מנגנון רישום אינטגרציות). כל רשם (registrar) הוא מחלקת PHP שמיישמת את הממשק Domain_Selling_Capability ורושמת את עצמה דרך ה-action hook wu_domain_seller_register_capabilities.

מדריך זה מראה כיצד לחבר רשם דומיינים מותאם אישית.

הממשק (The interface)​

המחלקה שלך חייבת ליישם את WP_Ultimo\Integrations\Capabilities\Domain_Selling_Capability ולרכוב על 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 למשך N שנים. */
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 { ... }

/** מחַדֵש דומיין למשך N שנים. */
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 { ... }
}

שיטות אופציונליות​

יישום שיטות אלו משחרר תכונות נוספות. התוסף מזהה תמיכה באמצעות method_exists():

שיטהמשחרר
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ניהול Nameservers
get_epp_code(string $domain_name): arrayהעברת דומיין (יציאה)
transfer_domain(string $domain, string $auth_code, array $registrant_info, array $options): arrayהעברת דומיין (כניסה)

קונבנציית ערך ההחזרה​

כל השיטות מחזירות מערך (array) עם לפחות מפתח success:

// הצלחה
return ['success' => true, 'data' => [...]];

// כישלון
return ['success' => false, 'message' => 'שגיאה קריאה לבני אדם'];

רישום היכולת שלך​

רשום את המחלקה שלך באמצעות ה-action 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) — סלאג קטן באותיות נמוכות המשמש לזיהוי הרשם שלך בהגדרות, בהגדרת המוצר ובערוצי הלוגים. השתמש במשהו ייחודי (למשל, סלאג של החברה שלך).


הוספת שדות אימות למעגל ההגדרה (Wizard)​

כדי לאפשר למנהלים להזין פרטי אימות דרך מעגל ההגדרה, רשום את האינטגרציה שלך:

add_action('wu_domain_seller_register_integrations', function(\WP_Ultimo\Integrations\Integration_Registry $registry) {
$registry->add_integration('my-registrar', [
'name' => __('My Registrar', 'my-plugin'),
'fields' => [
[
'id' => 'my_registrar_api_key',
'label' => __('API Key', 'my-plugin'),
'type' => 'text',
],
[
'id' => 'my_registrar_api_secret',
'label' => __('API Secret', 'my-plugin'),
'type' => 'password',
],
],
]);
});

פרטי האימות נשמרים כאפשרויות רשת (network options) באמצעות מזהי השדות כמפתחות. שחזר אותם במחלקת היכולת שלך באמצעות wu_get_setting('my_registrar_api_key').


Hooks עבור פעולות לאחר רישום​

השתמש ב-actions אלו כדי להפעיל Webhooks, Provisioning, התראות או עדכוני CRM:

// לאחר רישום דומיין מוצלח
add_action('wu_domain_registration_completed', function($payment, $registration_data, $result) {
// $registration_data: domain_name, provider_id, years, expiry_date, customer_id
// $result: תגובת רשם גולמית
my_crm_update_domain($registration_data['domain_name'], $registration_data['customer_id']);
}, 10, 3);

// לאחר כישלון רישום
add_action('wu_domain_registration_failed', function($payment, $registration_data, $error_message) {
my_alert_team("Domain registration failed: {$registration_data['domain_name']} — {$error_message}");
}, 10, 3);

// לאחר חידוש מוצלח
add_action('wu_domain_renewal_completed', function($payment, $renewal_data, $result) {
// עדכן את מערכת החיוב שלך, שלח קבלה וכו'.
}, 10, 3);

// לאחר כישלון חידוש
add_action('wu_domain_renewal_failed', function($payment, $renewal_data, $error_message) {
// התראה, לוגיקת ניסיון מחדש וכו'.
}, 10, 3);

// לאחר השלמת העברת דומיין
add_action('wu_domain_transfer_completed', function($domain, $transfer_data) {
// $domain הוא אובייקט WP_Ultimo\Models\Domain
}, 10, 2);

// לאחר אימות SES DKIM (אם אינטגרציית SES פעילה)
add_action('wu_domain_ses_verified', function($domain) {
// $domain הוא אובייקט WP_Ultimo\Models\Domain
});

רישום לוגים (Logging)​

כתוב לצינור הלוגים הספציפי לספק שלך באמצעות wu_log_add():

wu_log_add('domain-seller-my-registrar', "Registered {$domain_name} successfully", 'info');
wu_log_add('domain-seller-my-registrar', "Registration failed: {$error}", 'error');

הלוגים מופיעים תחת Network Admin › Ultimate Multisite › Logs › domain-seller-my-registrar.