Le processus d'inscription multisite n'est pas une chose facile à modifier. Il a de nombreux crochets pour jouer, contrairement à d'autres processus, mais ils ne semblent pas trop bien se combiner pour une personnalisation lourde, donc je comprends votre frustration.
Si je comprends bien, ce n'est pas si compliqué de réaliser ce que vous voulez, même si cela ne peut pas être une solution en une étape sans remplacer une grande partie du comportement par défaut de WordPress, principalement en raison de l'inscription (c'est-à-dire lorsque votre utilisateur soumettra les informations personnalisées) et de l'activation ( c'est-à-dire quand le nouveau blog sera réellement créé) se produire séparément.
Voici un code très approximatif dont vous aurez besoin pour commencer. Espérons que cela vous oriente dans la bonne direction:
// 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']);
}
Gardez à l'esprit:
- Si vous souhaitez filtrer l'entrée via un plug-in, je vous suggère fortement d'utiliser une entrée de sélection pour verrouiller les options fournies;
- Étant donné que certains champs sont obligatoires et passent par la validation lors de l'inscription (caractères minimum, caractères interdits pour le nom du site, noms sur liste noire, etc.), je suggérerais de vérifier votre champ supplémentaire sur le global $ _REQUEST lors du remplissage de la valeur de l'entrée sur le premier , afin que l'utilisateur ne perde pas son entrée au cas où il serait renvoyé pour fixer la valeur des champs par défaut de WordPress;
- Vous pouvez évidemment remplacer l'idée de la dernière fonction par celle qui convient le mieux à votre plug-in, mais la valeur du champ sera désormais disponible à partir de cette dernière fonction, ce qui devrait vous aider sur votre chemin.
Sur une note finale, si vous souhaitez traiter toutes les valeurs «extra_field» de tous les blogs existants plus tard, je suggère fortement de stocker les informations sur une seule table; peut-être utiliser à la update_site_option
place de update_blog_option
cette dernière fonction, perdant le blog_id, qui n'est pas requis dans ce cas.
Quoi qu'il en soit, laissez-nous savoir comment ça se passe, et bonne chance!