Skip to main content

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);