¿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' );
fuente
Respuestas:
Para hacer lo que quiera, puede agregar los campos que desee y luego almacenarlos en
user_meta
...(Uno también podría almacenarlos en la
$user_info
matriz / objeto, pero no estoy seguro de cuál sería el beneficio ...)después de todo eso, puede recuperar el user_theme así:
NOTA: Esto fue escrito sobre la marcha. No se verificó en varios blogs, sino en una instalación simple de wp, y aunque no debería haber mucha diferencia, aún no se trata de una función de producción, solo fue para ponerlo en el camino correcto. Se necesita saneamiento y verificación de variables, código de limpieza y FORM MARKUP, además de agregar el campo también a otras pantallas relacionadas con el usuario (crear usuario, editar usuario, editar perfil, etc.).
NOTA II: usted preguntó acerca de las formas de gravedad en su uodate; tienen un complemento para eso
fuente
template
ystylesheet
se almacenan en la tabla de opciones. Al decir eso, su código ha sido de gran ayuda hasta ahora, gracias.Sé que esto es una especie de trampa, pero uso este complemento. Le permite copiar cualquier sitio de red existente y luego lo pone a disposición como plantilla cuando se registran nuevos usuarios. Puede crear tantas plantillas de blog nuevas como desee. Contendrán todo el contenido, complementos, configuración, etc., y los usuarios pueden elegir uno al configurar un nuevo sitio / cuenta :)
http://premium.wpmudev.org/project/new-blog-template/
fuente
Este tipo de respuesta a su pregunta: ponemos un complemento llamado ' Cambio de tema ' en este sitio: focusww.com y pone una barra lateral donde puede elegir de una lista de temas. Le permite elegir qué temas se pueden usar y cuánto tiempo antes de que caduque la cookie para volver a un tema predeterminado.
fuente
Si aún es relevante, tal vez esto podría ayudar a otros que buscan soluciones similares
He escrito una publicación de blog ( http://artofcoding.in/select-theme-while-registering-wordpress-multisite-network/ ) aquí cuando tenía un requisito similar. Espero que esto sea útil.
fuente