Layout al azar en WordPress
Éste es uno de esos pequeños experimentos que difícilmente terminaría utilizando en un sitio en producción, pero que sirve para conocer un poco mejor el funcionamiento interno de Genesis Framework.
La idea es muy sencilla: cambiar el layout del sitio de forma aleatoria cada vez que se carga una página.
Más que una característica útil, se trata de una prueba de concepto para demostrar que el layout puede modificarse dinámicamente mediante uno de los filtros de Genesis.
La función comienza obteniendo un número aleatorio entre uno y dos.
Dependiendo del valor obtenido asigna uno de los dos layouts definidos por el framework.
En este ejemplo únicamente utilizo dos opciones:
content-sidebarsidebar-content
Naturalmente podrían agregarse tantos layouts como necesitemos.
El código es el siguiente:
/**
* Función Cyberia Layout
*
* @name cyberia_layout
* @author Javier Sanchez Toledano
* @link http://namespace.mx
*
* @param string $opt Layout actual del sitio.
* @return string Nuevo layout.
*/
add_filter('genesis_pre_get_option_site_layout', 'cyberia_layout');
function cyberia_layout($opt) {
if ( rand(1, 2) == 2 ) {
$opt = 'sidebar-content';
} else {
$opt = 'content-sidebar';
}
return $opt;
}
Lo interesante aquí no es la llamada a rand(), sino el filtro genesis_pre_get_option_site_layout.
Genesis consulta este filtro antes de determinar qué estructura utilizará para construir la página. Si devolvemos un valor diferente, el layout cambia inmediatamente sin necesidad de modificar ninguna plantilla ni realizar cambios en la configuración del tema.
Ésta es precisamente una de las características que más me gustan de Genesis: muchas de sus decisiones pueden modificarse mediante filtros, permitiendo alterar el comportamiento del framework con muy poco código.
Naturalmente, mostrar un layout distinto en cada recarga termina siendo una experiencia bastante incómoda para el visitante. El objetivo de este ejemplo no es utilizarlo tal como está, sino demostrar que el layout puede decidirse dinámicamente.
Una aplicación más práctica sería seleccionar la estructura de la página de acuerdo con algún criterio específico: el tipo de contenido, la categoría del artículo, el dispositivo desde el que navega el usuario o cualquier otra condición que podamos evaluar antes de que Genesis genere la página.
Usa Genesis Framework
Genesis proporciona una base sólida para desarrollar temas sobre WordPress. Su sistema de hooks y filtros permite modificar prácticamente cualquier aspecto del framework sin alterar su código original, facilitando la personalización y el mantenimiento del sitio.