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