Der Multisite-Anmeldevorgang ist nicht einfach zu optimieren. Im Gegensatz zu anderen Prozessen hat es viele Haken, mit denen man spielen kann, aber sie scheinen für umfangreiche Anpassungen nicht allzu gut zusammen zu passen, daher verstehe ich Ihre Frustration.
Wenn ich richtig verstehe, ist es nicht so kompliziert zu erreichen, was Sie wollen, obwohl es keine Ein-Schritt-Lösung sein kann, ohne einen Großteil des Standardverhaltens von WordPress außer Kraft zu setzen, hauptsächlich, weil die Anmeldung (dh wenn Ihr Benutzer die benutzerdefinierten Informationen übermittelt) und die Aktivierung ( dh wann der neue Blog tatsächlich erstellt wird) separat passieren.
Hier ist ein sehr grober Code, den Sie benötigen, um loszulegen. Hoffentlich lenkt es Sie in die richtige Richtung:
// 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']);
}
Merken Sie sich:
- Wenn Sie die Eingabe über ein Plug-In filtern möchten, empfehle ich dringend, einen ausgewählten Eingang zu verwenden, um die verfügbaren Optionen zu sperren.
- Da einige Felder erforderlich sind und während der Registrierung die Gültigkeitsprüfung durchlaufen (minimale Zeichen, unzulässige Zeichen für den Site-Namen, Namen auf der schwarzen Liste usw.), würde ich empfehlen, beim Ausfüllen des Werts der Eingabe im ersten Feld auf Ihr zusätzliches Feld im globalen Feld $ _REQUEST zu prüfen Funktion, damit der Benutzer seine Eingabe nicht verliert, falls er zurückgeschickt wird, um den Wert der Standardfelder von WordPress zu korrigieren;
- Sie können natürlich die Idee der letzten Funktion durch die ersetzen, die am besten zu Ihrem Plug-In passt, aber der Feldwert wird jetzt in dieser letzten Funktion verfügbar sein, was Ihnen auf Ihrem Weg helfen sollte.
Wenn Sie abschließend alle 'extra_field'-Werte aus allen vorhandenen Blogs später verarbeiten möchten, empfehle ich dringend, die Informationen in einer einzelnen Tabelle zu speichern. Verwenden Sie update_site_option
stattdessen update_blog_option
die letzte Funktion und verlieren Sie die blog_id, die in diesem Fall nicht erforderlich ist.
Wie auch immer, lass es uns wissen und viel Glück!