¿Es posible permitir que un usuario seleccione qué tema desea instalar desde la nueva página de registro del sitio? Y una vez que se crea el sitio, obviamente instala el tema que elijan.
Encontré wp_get_themes . ¿Es así como se debe completar previamente un menú desplegable con todos los temas disponibles? ¿Cómo pasa la información del tema al proceso de registro real para que el sitio se cree con el tema correcto?
Si alguien sabe cómo hacer esto con Gravity Forms, también sería genial.
Actualizar:
Esto es lo que tengo hasta ahora, no tiene en cuenta los temas secundarios, funcionará en eso después
Esta función generará una lista de temas con botones de opción, almacenando el tema seleccionado en $ _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' );
Pensé que agregaría un campo oculto como una forma de pasar el valor del tema a la creación del sitio. Sin embargo, hay algo mal con esto: en el último paso pierde su valor, aún no estoy seguro de por qué.
/**
* 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' );
Y finalmente, una función para pasar el nombre del tema al sitio recién creado. Esto funciona si codifico las variables, pero todavía no puedo pasar el valor de custom_theme. El sitio se crea bien, pero las opciones de plantilla y hoja de estilo están en blanco. Simplemente no está obteniendo el valor, no importa lo que intente. Supongo que tengo que usar $ _GET para acceder al campo oculto que creé anteriormente. Una vez más, todo lo que quiero hacer en este punto es pasar el mismo nombre de tema a las opciones de plantilla y hoja de estilo, descubriré cómo diferenciarlas después de que funcione.
/**
* 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' );