È possibile consentire a un utente di selezionare quale tema desidera installare dalla nuova pagina di registrazione del sito? E una volta creato il sito, si installa ovviamente qualunque tema abbiano scelto.
Ho trovato wp_get_themes . È così che prepari a popolare un menu a discesa con tutti i temi disponibili? Come si passano le informazioni del tema al processo di registrazione effettivo in modo che il sito venga creato con il tema corretto?
Se qualcuno sa come farlo con Gravity Forms, sarebbe fantastico.
Aggiornare:
Ecco quello che ho finora, non tiene conto dei temi figlio, lavorerà su quello dopo
Questa funzione produrrà un elenco di temi con pulsanti di opzione, memorizzando il tema selezionato 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' );
Ho pensato di aggiungere un campo nascosto come modo per trasmettere il valore del tema alla creazione del sito. C'è qualcosa di sbagliato in questo però - all'ultimo passo perde il suo valore, non so ancora perché.
/**
* 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' );
E infine una funzione per passare il nome del tema al sito appena creato. Funziona se codifico le variabili, ma non riesco ancora a passare il valore di custom_theme. Il sito viene creato bene, ma le opzioni del modello e del foglio di stile sono vuote. Non sta ottenendo il valore, non importa quello che provo. Immagino di dover usare $ _GET per accedere al campo nascosto che ho creato in precedenza. Ancora una volta, tutto ciò che voglio fare a questo punto è passare lo stesso nome di tema al modello e alle opzioni del foglio di stile, scoprirò come differenziarli dopo che lo avrò funzionato.
/**
* 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' );