El proceso de registro en varios sitios no es fácil de modificar. Tiene muchos ganchos con los que jugar, a diferencia de otros procesos, pero parece que no se combinan demasiado bien para una gran personalización, por lo que entiendo su frustración.
Si entiendo correctamente, no es tan complicado lograr lo que desea, aunque no puede ser una solución de un solo paso sin anular gran parte del comportamiento predeterminado de WordPress, principalmente porque el registro (es decir, cuando el usuario enviará la información personalizada) y la activación ( es decir, cuándo se creará el nuevo blog) suceda por separado.
Aquí hay un código muy aproximado que necesitará para comenzar. Esperemos que te guíe en la dirección correcta:
// 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']);
}
Tenga en cuenta:
- Si desea filtrar la entrada a través del complemento, le sugiero encarecidamente que use una entrada de selección para bloquear las opciones proporcionadas;
- Dado que algunos campos son obligatorios y pasan por la validación durante el registro (caracteres mínimos, caracteres no permitidos para el nombre del sitio, nombres en la lista negra, etc.), sugeriría verificar su campo adicional en el global $ _REQUEST al completar el valor de la entrada en el primer función, para que el usuario no pierda su entrada en caso de que sea enviado de vuelta para corregir el valor de los campos predeterminados de WordPress;
- Obviamente, puede reemplazar la idea de la última función con la que mejor se adapte a su complemento, pero el valor del campo ahora estará disponible desde esa última función, lo que debería ayudarlo en su camino.
En una nota final, si desea procesar todos los valores 'extra_field' de todos los blogs existentes más adelante, le sugiero que almacene la información en una sola tabla; tal vez use en update_site_option
lugar de update_blog_option
esa última función, perdiendo el blog_id, que no es necesario en ese caso.
De todos modos, ¡cuéntanos cómo te va y buena suerte!