Kann ein Benutzer auf der neuen Website-Anmeldeseite auswählen, welches Thema er installieren möchte? Und sobald die Site erstellt ist, wird offensichtlich das von ihnen gewählte Thema installiert.
Ich habe wp_get_themes gefunden . Würden Sie auf diese Weise ein Dropdown-Menü mit allen verfügbaren Themen vorab ausfüllen? Wie geben Sie die Informationen zum Thema an den eigentlichen Anmeldevorgang weiter, damit die Site mit dem richtigen Thema erstellt wird?
Wenn jemand weiß, wie man das mit Gravity Forms macht, wäre das auch großartig.
Aktualisieren:
Hier ist, was ich bisher habe, es berücksichtigt keine untergeordneten Themen, wird danach arbeiten
Diese Funktion gibt eine Liste von Themen mit Optionsfeldern aus und speichert das ausgewählte Thema in $ _POST ['custom_theme'].
/**
* Show list of themes at bottom of wp-signup.php (multisite)
*/
function 70169_add_signup_extra_fields() { ?>
Themes<br />
<?php
$themes = wp_get_themes();
foreach ( $themes as $theme ) {
$theme_name = $theme['Name'];
$theme_stylesheet = $theme->stylesheet;
?>
<label>
<input id="<?php echo $theme_stylesheet; ?>" type="radio" <?php if ( isset( $_POST['custom_theme'] ) ) checked( $_POST['custom_theme'], $theme_stylesheet ); ?> name="custom_theme" value="<?php echo $theme_stylesheet; ?>" ><?php echo $theme_name; ?>
</label>
<?php } ?>
<?php }
add_action( 'signup_extra_fields', '70169_add_signup_extra_fields' );
Ich dachte, ich würde ein verstecktes Feld hinzufügen, um den Wert des Themas an die Site-Erstellung weiterzugeben. Daran stimmt jedoch etwas nicht - im letzten Schritt verliert es seinen Wert, nicht sicher warum.
/**
* Add a hidden field with the theme's value
*/
function 70169_theme_hidden_fields() { ?>
<?php
$theme = isset( $_POST['custom_theme'] ) ? $_POST['custom_theme'] : null;
?>
<input type="hidden" name="user_theme" value="<?php echo $theme; ?>" />
<?php }
add_action( 'signup_hidden_fields', '70169_theme_hidden_fields' );
Und schließlich eine Funktion zum Übergeben des Themennamens an die neu erstellte Site. Dies funktioniert, wenn ich die Variablen fest codiere, aber den Wert von custom_theme noch nicht übergeben kann. Die Site wird einwandfrei erstellt, aber die Optionen für Vorlagen und Stylesheets sind leer. Es wird einfach nicht den Wert bekommen, egal was ich versuche. Ich muss wohl $ _GET verwenden, um auf das versteckte Feld zuzugreifen, das ich zuvor erstellt habe. Alles, was ich an dieser Stelle tun möchte, ist, den gleichen Themennamen an die Vorlagen- und Stylesheet-Optionen zu übergeben. Ich werde herausfinden, wie ich sie unterscheiden kann, nachdem ich sie zum Laufen gebracht habe.
/**
* Create the new site with the theme name
*/
function 70169_wpmu_new_blog( $blog_id ) {
// need to get this working, use $_GET?
// $theme = ???
update_blog_option( $blog_id, 'template', $theme ); // $theme works if I hardcode it with a theme name
update_blog_option( $blog_id, 'stylesheet', $theme );
}
add_action( 'wpmu_new_blog', '70169_wpmu_new_blog' );