Ana içeriğe geç

Hook Kullanım Rehberi

Ultimate Multisite, 200'den fazla aksiyon hook'u ve 280'den fazla filtre hook'u sağlamaktadır. Bu sayfa, en sık kullanılan hook'ları pratik örneklerle ele almaktadır. Tam 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 vermek
}, 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 işlemek
});

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ı

İşlenmeden Önce / Tamamlandıktan Sonra

/**
* @param WP_Ultimo\Checkout\Cart $cart
*/
add_action('wu_checkout_before_processing', function($cart) {
// İşlemden önce sepeti doğrulamak veya değiştirmek
});

/**
* @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ü izlemek, bildirim göndermek vb.
}, 10, 3);

Alan Adı Hook'ları

add_action('wu_domain_mapped', function($domain) {
// CDN veya DNS yapılandırmasını güncellemek
});

add_action('wu_domain_ssl_verified', function($domain) {
// Alan adı 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);