Hook Kullanım Rehberi
Ultimate Multisite, 200'den fazla aksiyon hook'u ve 280'den fazla filtre hook'u sunuyor. Bu sayfa, en sık kullanılan hook'ları pratik örneklerle ele alıyor. Eksiksiz, otomatik oluşturulmuş bir referans için bu bölümdeki diğer sayfalara göz atabilirsiniz.
Aksiyon Hook'ları
Müşteri Yaşam Döngüsü
Müşteri Oluşturulduktan Sonra
/**
* @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!'
);
});
Müşteri Durumu Değiştiğinde
/**
* @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) {
// Durum geçişlerine tepki verin
}, 10, 3);
Site Hook'ları
Site Yayınlandıktan Sonra
/**
* @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);
Şablon Uygulanmadan Önce
/**
* @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);
Üyelik Hook'ları
Durum Geçişleri
add_action('wu_membership_status_to_active', function($membership) {
// Üyelik etkinleştirildi
});
add_action('wu_membership_status_to_expired', function($membership) {
$sites = $membership->get_sites();
foreach ($sites as $site) {
$site->set_status('suspended');
$site->save();
}
});
Ödeme Hook'ları
Ödeme Tamamlandı / Başarısız Oldu
add_action('wu_payment_completed', function($payment) {
// Başarılı ödemeyi yönetin
});
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);
Checkout Hook'ları
İşlemden Önce / Tamamlandıktan Sonra
/**
* @param WP_Ultimo\Checkout\Cart $cart
*/
add_action('wu_checkout_before_processing', function($cart) {
// İşlemden önce sepeti doğrulayın veya değiştirin
});
/**
* @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) {
// Dönüşümü izleyin, bildirim gönderin vb.
}, 10, 3);
Domain Hook'ları
add_action('wu_domain_mapped', function($domain) {
// CDN veya DNS yapılandırmasını güncelleyin
});
add_action('wu_domain_ssl_verified', function($domain) {
// Domain için SSL sertifikası doğrulandı
});
Filtre Hook'ları
Fiyatlandırma Filtreleri
Sepet Toplamı
add_filter('wu_cart_total', function($total, $cart) {
$customer = $cart->get_customer();
if ($customer && $customer->is_vip()) {
$total = $total * 0.9; // %10 VIP indirimi
}
return $total;
}, 10, 2);
Vergi Oranları
add_filter('wu_tax_rate', function($rate, $country, $state) {
if ($country === 'US' && $state === 'CA') {
return 0.0875;
}
return $rate;
}, 10, 3);
Şablon Filtreleri
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);
Sınırlama Filtreleri
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; // Uzun süreli müşteriler için ekstra 500MB
}
return $limit;
}, 10, 3);
Ağ Geçidi Filtreleri
add_filter('wu_available_gateways', function($gateways, $cart) {
if ($cart->get_total() > 1000) {
unset($gateways['paypal']);
}
return $gateways;
}, 10, 2);
Checkout Form Alanları
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);
E-posta İçeriği
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);