O processo de inscrição em vários sites não é algo fácil de ajustar. Ele tem muitos ganchos para jogar, ao contrário de outros processos, mas eles não parecem se encaixar muito bem para personalização pesada, então eu entendo sua frustração.
Se eu entendi corretamente, não é tão complicado conseguir o que você deseja, embora não possa ser uma solução de uma etapa sem substituir muito do comportamento padrão do WordPress, principalmente porque a inscrição (ou seja, quando o usuário enviará as informações personalizadas) e a ativação ( ou seja, quando o novo blog será criado) acontecerá separadamente.
Aqui está um código muito difícil que você precisará para começar. Espero que ele o direcione na direção certa:
// 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']);
}
Tenha em mente:
- Se você deseja filtrar a entrada via plug-in, sugiro fortemente o uso de uma entrada selecionada para bloquear as opções fornecidas;
- Como alguns campos são obrigatórios e passam pela validação durante o registro (caracteres mínimos, caracteres não permitidos para o nome do site, nomes na lista negra etc.), sugiro que você verifique seu campo extra no global $ _REQUEST ao preencher o valor da entrada no primeiro função, para que o usuário não perca sua entrada caso seja enviado de volta para corrigir o valor dos campos padrão do WordPress;
- Obviamente, você pode substituir a ideia da última função pelo que melhor se adequar ao seu plug-in, mas o valor do campo estará disponível a partir dessa última função, o que deve ajudá-lo no seu caminho.
Em uma nota final, se você quiser processar todos os valores 'extra_field' de todos os blogs existentes mais adiante, sugiro fortemente que você armazene as informações em uma única tabela; talvez use em update_site_option
vez update_blog_option
dessa última função, perdendo o blog_id, que não é necessário nesse caso.
De qualquer forma, deixe-nos saber como vai ser, e boa sorte!