Est-il possible d'autoriser un utilisateur à sélectionner le thème qu'il souhaite installer à partir de la nouvelle page d'inscription au site? Et une fois le site créé, il installe évidemment le thème choisi.
J'ai trouvé wp_get_themes . Est-ce ainsi que vous procéderiez pour préremplir un menu déroulant avec tous les thèmes disponibles? Comment passez-vous les informations du thème au processus d'inscription réel pour que le site soit créé avec le thème correct?
Si quelqu'un sait comment faire cela avec Gravity Forms, ce serait bien aussi.
Mise à jour:
Voici ce que j'ai jusqu'à présent, il ne prend pas en compte les thèmes enfants, fonctionnera après
Cette fonction affichera une liste de thèmes avec des boutons radio, stockant le thème sélectionné dans $ _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' );
J'ai pensé ajouter un champ caché comme moyen de transmettre la valeur du thème à la création du site. Cependant, il y a quelque chose qui ne va pas - à la dernière étape, il perd sa valeur, je ne sais pas encore pourquoi.
/**
* 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' );
Et enfin une fonction pour passer le nom du thème au site nouvellement créé. Cela fonctionne si je code en dur les variables, mais je ne suis pas encore en mesure de transmettre la valeur de custom_theme. Le site est bien créé mais les options de modèle et de feuille de style sont vides. Il n'obtient simplement pas la valeur, peu importe ce que j'essaie. Je suppose que je dois utiliser $ _GET pour accéder au champ caché que j'ai créé plus tôt. Encore une fois, tout ce que je veux faire à ce stade est de passer le même nom de thème aux options de modèle et de feuille de style, je vais comprendre comment les différencier après l'avoir fait fonctionner.
/**
* 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' );