إنتقل إلى المحتوى الرئيسي

دليل استخدام الHooks

يقدم Ultimate Multisite أكثر من 200 Hook إجراء وأكثر من 280 Hook فلتر. تغطي هذه الصفحة أكثر الHooks استخدامًا مع أمثلة عملية. للحصول على مرجع كامل مُولَّد تلقائيًا، تصفح الصفحات الأخرى في هذا القسم.

الHooks الإجراءية

دورة حياة العميل

بعد إنشاء العميل

/**
* @param WP_Ultimo\Models\Customer $customer
*/
add_action('wu_customer_post_create', function($customer) {
wp_mail(
$customer->get_email(),
'Welcome!',
'Thanks for joining our platform!'
);
});

تغيير حالة العميل

/**
* @param WP_Ultimo\Models\Customer $customer
* @param string $old_status
* @param string $new_status
*/
add_action('wu_customer_status_change', function($customer, $old_status, $new_status) {
// رد على انتقالات الحالة
}, 10, 3);

الHooks للموقع

بعد نشر الموقع

/**
* @param WP_Ultimo\Models\Site $site
* @param WP_Ultimo\Models\Membership $membership
*/
add_action('wu_site_published', function($site, $membership) {
switch_to_blog($site->get_id());
activate_plugin('essential-plugin/essential-plugin.php');
restore_current_blog();
}, 10, 2);

قبل تطبيق القالب

/**
* @param int $site_id
* @param int $template_id
*/
add_action('wu_before_apply_template', function($site_id, $template_id) {
switch_to_blog($site_id);

if ($template_id === 5) {
update_option('woocommerce_store_setup', 'complete');
}

restore_current_blog();
}, 10, 2);

الHooks للعضوية

انتقالات الحالة

add_action('wu_membership_status_to_active', function($membership) {
// تم تفعيل العضوية
});

add_action('wu_membership_status_to_expired', function($membership) {
$sites = $membership->get_sites();
foreach ($sites as $site) {
$site->set_status('suspended');
$site->save();
}
});

الHooks للمدفوعات

الدفع مكتمل / فشل

add_action('wu_payment_completed', function($payment) {
// التعامل مع الدفع الناجح
});

add_action('wu_payment_failed', function($payment, $error_message) {
$admin_email = get_option('admin_email');
wp_mail(
$admin_email,
'Payment Failed',
sprintf('Payment #%d failed: %s', $payment->get_id(), $error_message)
);
}, 10, 2);

الHooks للطلب

قبل المعالجة / بعد الاكتمال

/**
* @param WP_Ultimo\Checkout\Cart $cart
*/
add_action('wu_checkout_before_processing', function($cart) {
// التحقق أو تعديل السلة قبل المعالجة
});

/**
* @param WP_Ultimo\Models\Payment $payment
* @param WP_Ultimo\Models\Customer $customer
* @param WP_Ultimo\Models\Membership $membership
*/
add_action('wu_checkout_completed', function($payment, $customer, $membership) {
// تتبع التحويل، إرسال الإشعارات، إلخ.
}, 10, 3);

الHooks للنطاق

add_action('wu_domain_mapped', function($domain) {
// تحديث إعدادات CDN أو DNS
});

add_action('wu_domain_ssl_verified', function($domain) {
// تم التحقق من شهادة SSL للنطاق
});

الHooks الفلاتر

فلاتر التسعير

إجمالي السلة

add_filter('wu_cart_total', function($total, $cart) {
$customer = $cart->get_customer();

if ($customer && $customer->is_vip()) {
$total = $total * 0.9; // خصم 10٪ للVIP
}

return $total;
}, 10, 2);

معدلات الضرائب

add_filter('wu_tax_rate', function($rate, $country, $state) {
if ($country === 'US' && $state === 'CA') {
return 0.0875;
}

return $rate;
}, 10, 3);

فلاتر القوالب

add_filter('wu_available_templates', function($templates, $customer) {
if (!$customer->is_vip()) {
foreach ($templates as $key => $template) {
if ($template['category'] === 'premium') {
unset($templates[$key]);
}
}
}

return $templates;
}, 10, 2);

فلاتر القيود

add_filter('wu_limitation_feature_allowed', function($allowed, $site_id, $membership) {
if ($membership->get_customer()->is_vip()) {
return true;
}

return $allowed;
}, 10, 3);

add_filter('wu_disk_space_limit', function($limit, $site_id, $membership) {
if ($membership->get_days_active() > 365) {
$limit += 500; // 500 ميجابايت إضافية للعملاء طويل الأجل
}

return $limit;
}, 10, 3);

فلاتر البوابة

add_filter('wu_available_gateways', function($gateways, $cart) {
if ($cart->get_total() > 1000) {
unset($gateways['paypal']);
}

return $gateways;
}, 10, 2);

حقول نموذج الدفع

add_filter('wu_checkout_form_final_fields', function($fields, $form) {
$fields['company'] = [
'type' => 'text',
'title' => 'Company Name',
'required' => true,
'placeholder' => 'Enter company name'
];

return $fields;
}, 10, 2);

محتوى البريد الإلكتروني

add_filter('wu_email_content', function($content, $type, $customer) {
if ($type === 'welcome') {
$content .= "\n\nSpecial offer: Use code WELCOME10 for 10% off!";
}
return $content;
}, 10, 3);