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' );
la source
Réponses:
Pour faire ce que vous voulez, vous pouvez ajouter les champs que vous voulez, puis les stocker dans le
user_meta
...(On pourrait également les stocker dans le
$user_info
tableau / objet, mais je ne sais pas quel serait l'avantage ..)après tout cela, vous pouvez récupérer le user_theme comme ceci:
REMARQUE: Ceci a été écrit à la volée. Cela n'a pas été vérifié sur plusieurs blogs, mais sur une simple installation wp, et bien qu'il ne devrait pas y avoir beaucoup de différence - ce n'est toujours pas une fonction de production, c'était seulement pour vous mettre sur la bonne voie. L'assainissement et la vérification des variables, le code de nettoyage et le FORMULAIRE DE MARQUAGE sont nécessaires, ainsi que l'ajout du champ également à d'autres écrans liés à l'utilisateur (créer un utilisateur, modifier un utilisateur, modifier un profil, etc.).
NOTE II: vous avez posé des questions sur les formes de gravité dans votre uodate - ils ont un add-on pour cela
la source
template
etstylesheet
sont stockés dans la table des options. En disant cela, votre code a été d'une grande aide jusqu'à présent, merci.Je sais que c'est une sorte de tricherie, mais j'utilise ce plugin. Il vous permet de copier n'importe quel site réseau existant, puis le rend disponible en tant que modèle lorsque de nouveaux utilisateurs s'inscrivent. Vous pouvez créer autant de nouveaux modèles de blog que vous le souhaitez. Ils contiendront tout le contenu, les plugins, les paramètres, etc., etc. et les utilisateurs peuvent en choisir un lors de la création d'un nouveau site / compte :)
http://premium.wpmudev.org/project/new-blog-template/
la source
Ce type de réponse à votre question: Nous avons mis un plugin appelé « Theme Switch » sur ce site: focusww.com et il a mis une barre latérale où vous pouvez choisir parmi une liste de thèmes. Il vous permet de choisir quels thèmes peuvent être utilisés et combien de temps avant l'expiration du cookie pour revenir à un thème par défaut.
la source
Si cela reste pertinent, cela pourrait peut-être aider d'autres personnes à la recherche de solutions similaires
J'ai écrit un article de blog ( http://artofcoding.in/select-theme- while-registering-wordpress-multisite-network/ ) ici quand j'avais une exigence similaire. J'espère que cela vous sera utile.
la source