Panduan Penggunaan Hook
Ultimate Multisite menyediakan lebih dari 200 action hooks dan 280 filter hooks. Halaman ini membahas hook yang paling sering digunakan dengan contoh praktis. Untuk referensi lengkap yang dibuat otomatis, jelajahi halaman lain di bagian ini.
Action Hooks
Siklus Hidup Pelanggan
Setelah Pembuatan Pelanggan
/**
* @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!'
);
});
Perubahan Status Pelanggan
/**
* @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) {
// Bereaksi terhadap transisi status
}, 10, 3);
Hook Situs
Setelah Situs Dipublikasikan
/**
* @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);
Sebelum Penerapan Template
/**
* @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);
Hook Keanggotaan
Transisi Status
add_action('wu_membership_status_to_active', function($membership) {
// Keanggotaan diaktifkan
});
add_action('wu_membership_status_to_expired', function($membership) {
$sites = $membership->get_sites();
foreach ($sites as $site) {
$site->set_status('suspended');
$site->save();
}
});
Hook Pembayaran
Pembayaran Selesai / Gagal
add_action('wu_payment_completed', function($payment) {
// Menangani pembayaran yang berhasil
});
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);
Hook Checkout
Sebelum Pemrosesan / Setelah Penyelesaian
/**
* @param WP_Ultimo\Checkout\Cart $cart
*/
add_action('wu_checkout_before_processing', function($cart) {
// Memvalidasi atau memodifikasi keranjang sebelum diproses
});
/**
* @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) {
// Melacak konversi, mengirim notifikasi, dll.
}, 10, 3);
Hook Domain
add_action('wu_domain_mapped', function($domain) {
// Memperbarui konfigurasi CDN atau DNS
});
add_action('wu_domain_ssl_verified', function($domain) {
// Sertifikat SSL diverifikasi untuk domain
});
Filter Hooks
Filter Harga
Total Keranjang
add_filter('wu_cart_total', function($total, $cart) {
$customer = $cart->get_customer();
if ($customer && $customer->is_vip()) {
$total = $total * 0.9; // Diskon VIP 10%
}
return $total;
}, 10, 2);
Tarif Pajak
add_filter('wu_tax_rate', function($rate, $country, $state) {
if ($country === 'US' && $state === 'CA') {
return 0.0875;
}
return $rate;
}, 10, 3);
Filter Template
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);
Filter Batasan
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; // Tambahan 500MB untuk pelanggan jangka panjang
}
return $limit;
}, 10, 3);
Filter Gateway
add_filter('wu_available_gateways', function($gateways, $cart) {
if ($cart->get_total() > 1000) {
unset($gateways['paypal']);
}
return $gateways;
}, 10, 2);
Bidang Formulir Checkout
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);
Konten Email
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);