El proceso de registro en varios sitios no es fácil de modificar. Tiene muchos ganchos para jugar, a diferencia de otros procesos, pero parece que no se unen demasiado bien para una personalización pesada, 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á realmente el nuevo blog) ocurre por separado.
Aquí hay un código muy aproximado que necesitarás 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']);
}
Ten en cuenta:
- Si desea filtrar la entrada a través de un complemento, le recomiendo
sugiera utilizar una entrada de selección para bloquear las opciones proporcionadas;
- Dado que algunos campos son obligatorios y pasan por la validación durante
registro (caracteres mínimos, caracteres no permitidos para el sitio
nombre, nombres en la lista negra, etc.), sugeriría revisar su
campo adicional en el $ _REQUEST global al completar el valor de la
ingrese en la primera función, para que el usuario no pierda su entrada en caso de que se envíe para corregir el valor de los campos predeterminados de WordPress;
- Obviamente, puedes reemplazar la idea de la última función con
lo que mejor se adapte a su plug-in, pero el valor del campo ahora será
disponible desde dentro de la última función, que debería ayudarle en
a tu manera.
En una nota final, si desea procesar todos los valores de 'extra_field' de todos los blogs existentes más adelante, sugeriría guardar la información en una sola tabla; tal vez use update_site_option
en lugar de update_blog_option
en esa última función, perdiendo el blog_id, que no es necesario en ese caso.
De todos modos, háganos saber cómo va, y ¡buena suerte!