¿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 se instala el tema que elijan.
Encontré wp_get_themes . ¿Es así como lo haría antes de rellenar un menú desplegable con todos los temas disponibles? ¿Cómo se 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, eso también sería bueno.
Actualizar:
Esto es lo que tengo hasta ahora, no tiene en cuenta los temas secundarios, trabajará en eso después
Esta función generará una lista de temas con botones de radio, 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 malo con esto: en el último paso pierde su valor, no estoy seguro de por qué todavía.
/**
* 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 realizo un hardcode de las variables, pero aún no puedo pasar el valor del 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 momento es pasar el mismo nombre de tema a las opciones de plantilla y hoja de estilo. Descubriré cómo diferenciarlas una vez que las haga 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' );