Proces rejestracji w wielu witrynach nie jest łatwą modyfikacją. Ma wiele haczyków do zabawy, w przeciwieństwie do innych procesów, ale wydaje się, że nie pasują zbyt dobrze do ciężkich dostosowań, więc rozumiem twoją frustrację.
Jeśli dobrze rozumiem, nie jest to tak skomplikowane, aby osiągnąć to, czego chcesz, chociaż nie może to być jednoetapowe rozwiązanie bez zastąpienia większości domyślnego zachowania WordPress, głównie dlatego, że rejestracja (tj. Kiedy użytkownik prześle niestandardowe informacje) i aktywacja ( tzn. kiedy nowy blog zostanie faktycznie utworzony) dzieje się osobno.
Oto bardzo przybliżony kod, którego będziesz potrzebować, aby zacząć. Mam nadzieję, że poprowadzi cię we właściwym kierunku:
// 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']);
}
Pamiętać:
- Jeśli chcesz filtrować dane wejściowe za pomocą wtyczki, zdecydowanie sugeruję użycie wejścia select do zablokowania dostępnych opcji;
- Ponieważ niektóre pola są wymagane i przechodzą sprawdzanie poprawności podczas rejestracji (minimalne znaki, niedozwolone znaki dla nazwy witryny, nazwy na czarnej liście itp.), Sugerowałbym sprawdzenie dodatkowego pola na globalnej zmiennej $ _REQUEST podczas wypełniania wartości danych wejściowych przy pierwszym funkcja, aby użytkownik nie stracił danych wejściowych w przypadku odesłania go w celu ustalenia wartości domyślnych pól WordPress;
- Możesz oczywiście zastąpić pomysł ostatniej funkcji tym, co najbardziej odpowiada wtyczce, ale wartość pola będzie teraz dostępna z tej ostatniej funkcji, co powinno ci pomóc na drodze.
Na koniec, jeśli chcesz później przetworzyć wszystkie wartości „extra_field” ze wszystkich istniejących blogów, zdecydowanie zalecam przechowywanie informacji na jednym stole; być może użyj update_site_option
zamiast update_blog_option
tej ostatniej funkcji, tracąc identyfikator blog_id, co w takim przypadku nie jest wymagane.
W każdym razie daj nam znać, jak to idzie i powodzenia!