Proses pendaftaran Multisite bukan hal yang mudah untuk di-tweak. Memang ada banyak kait untuk dimainkan, tidak seperti proses lainnya, tetapi mereka tampaknya tidak cocok untuk kustomisasi berat, jadi saya mengerti frustrasi Anda.
Jika saya mengerti dengan benar, itu tidak terlalu sulit untuk mencapai apa yang Anda inginkan, meskipun itu tidak bisa menjadi solusi satu langkah tanpa mengesampingkan banyak perilaku default WordPress, terutama karena pendaftaran (yaitu ketika pengguna Anda akan mengirimkan informasi khusus) dan aktivasi ( yaitu ketika blog baru benar-benar akan dibuat) terjadi secara terpisah.
Berikut adalah kode yang sangat kasar yang harus Anda mulai. Semoga ini mengarahkan Anda ke arah yang benar:
// 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']);
}
Ingatlah:
- Jika Anda ingin memfilter input melalui plug-in, saya akan sangat menyarankan menggunakan input pilih untuk mengunci opsi yang disediakan;
- Karena beberapa bidang diperlukan dan melewati validasi selama pendaftaran (karakter minimum, karakter yang tidak diizinkan untuk nama situs, nama daftar hitam, dll), saya akan menyarankan memeriksa bidang tambahan Anda pada global $ _REQUEST saat mengisi nilai input pada yang pertama berfungsi, sehingga pengguna tidak kehilangan inputnya seandainya dia dikirim kembali untuk memperbaiki nilai bidang default WordPress;
- Anda jelas dapat mengganti gagasan fungsi terakhir dengan apa pun yang paling sesuai dengan plug-in Anda, tetapi nilai bidang sekarang akan tersedia dari dalam fungsi terakhir itu, yang akan membantu Anda dalam perjalanan Anda.
Pada catatan terakhir, jika Anda ingin memproses semua nilai 'extra_field' dari semua blog yang ada nanti, saya sarankan untuk menyimpan informasi di satu tabel; mungkin menggunakan update_site_option
alih-alih update_blog_option
pada fungsi terakhir itu, kehilangan blog_id, yang tidak diperlukan dalam kasus itu.
Bagaimanapun, beri tahu kami bagaimana hasilnya, dan semoga berhasil!