Çoklu site kayıt işlemi ince ayar yapmak için kolay bir şey değildir. Diğer süreçlerin aksine oynamak için birçok kanca var, ancak ağır özelleştirme için çok iyi bir araya gelmiyorlar, bu yüzden hayal kırıklığınızı anlıyorum.
Doğru bir şekilde anlarsam, WordPress'in varsayılan davranışının çoğunu geçersiz kılmadan tek adımlık bir çözüm olamamasına rağmen, esas olarak kayıt (yani, kullanıcının özel bilgileri göndereceği zaman) ve aktivasyon ( (yeni blogun ne zaman oluşturulacağı) ayrı ayrı gerçekleşir.
İşte başlamanız gereken çok kaba bir kod. Umarım sizi doğru yöne yönlendirir:
// Add text field on blog signup form
add_action('signup_blogform', 'add_extra_field_on_blog_signup');
function add_extra_field_on_blog_signup() { ?>
<label>An extra field</label>
<input type="text" name="extra_field" value="" />
<?php
}
// Append the submitted value of our custom input into the meta array that is stored while the user doesn't activate
add_filter('add_signup_meta', 'append_extra_field_as_meta');
function append_extra_field_as_meta($meta) {
if(isset($_REQUEST['extra_field'])) {
$meta['extra_field'] = $_REQUEST['extra_field'];
}
return $meta;
}
// When the new site is finally created (user has followed the activation link provided via e-mail), add a row to the options table with the value he submitted during signup
add_action('wpmu_new_blog', 'process_extra_field_on_blog_signup', 10, 6);
function process_extra_field_on_blog_signup($blog_id, $user_id, $domain, $path, $site_id, $meta) {
update_blog_option($blog_id, 'extra_field', $meta['extra_field']);
}
Aklında tut:
- Girdiyi eklenti aracılığıyla filtrelemek istiyorsanız, sağlanan seçenekleri kilitlemek için bir seçme girdisi kullanmanızı şiddetle öneririm;
- Bazı alanlar zorunlu olduğundan ve kayıt sırasında doğrulamadan geçtiği için (minimum karakter, site adı için izin verilmeyen karakterler, kara listeye alınmış adlar vb.), İlkinde girişin değerini doldururken $ _REQUEST globalindeki ekstra alanınızı kontrol etmenizi öneririm işlevi, böylece kullanıcı WordPress'in varsayılan alanlarının değerini düzeltmek için geri gönderilmesi durumunda girişini kaybetmez;
- Son işlevin fikrini, eklentinize en uygun olanla değiştirebilirsiniz, ancak alanın değeri artık bu son işlevden kullanılabilir ve bu da size yardımcı olacaktır.
Son bir notta, daha sonra mevcut tüm bloglardan tüm 'extra_field' değerlerini işlemek istiyorsanız, bilgilerin tek bir tabloda depolanmasını şiddetle tavsiye ederim; belki bu son işlev update_site_option
yerine kullanmak update_blog_option
, blog_id kaybetmek, bu durumda gerekli değildir.
Her neyse, nasıl gittiğini bize bildirin ve iyi şanslar!