É possível permitir que um usuário selecione qual tema deseja instalar na nova página de inscrição no site? E uma vez que o site é criado, ele obviamente instala o tema escolhido.
Encontrei wp_get_themes . É assim que você preencheria previamente um menu suspenso com todos os temas disponíveis? Como você passa as informações do tema para o processo de inscrição real, para que o site seja criado com o tema correto?
Se alguém sabe como fazer isso com Gravity Forms, isso seria ótimo também.
Atualizar:
Aqui está o que eu tenho até agora, ele não leva em conta os temas filhos, trabalhará nisso depois
Esta função produzirá uma lista de temas com botões de opção, armazenando o tema selecionado em $ _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' );
Eu pensei em adicionar um campo oculto como uma maneira de passar o valor do tema para a criação do site. Há algo errado com isso - no último passo, ele perde seu valor, ainda não sei por que.
/**
* 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, finalmente, uma função para passar o nome do tema para o site recém-criado. Isso funciona se eu codificar as variáveis, mas ainda não consigo transmitir o valor do custom_theme. O site foi criado corretamente, mas as opções de modelo e folha de estilo estão em branco. Só não está obtendo o valor, não importa o que eu tente. Acho que tenho que usar $ _GET para acessar o campo oculto que criei anteriormente. Novamente, tudo o que eu quero fazer neste momento é passar o mesmo nome de tema para as opções de modelo e folha de estilo. Descobrirei como diferenciá-los depois de fazê-lo funcionar.
/**
* 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' );