Este código PHP ofrece una solución versátil y dinámica para la gestión de menús en sitios web construidos con WordPress. Diseñado para adaptarse según el momento del día, el sistema brinda a los administradores de sitios la capacidad de presentar ofertas específicas, ya sea para el desayuno, el almuerzo, la cena o cualquier otro momento del día.
Aunque en el ejemplo vamos a utilizar el menú de un restaurante para que se entienda mejor el concepto, puedes modificar el código y adaptarlo a tus necesidades.
Casos de Posibles Usos:
- Restaurantes y Cafeterías:
- Menús Específicos: Los propietarios de restaurantes pueden personalizar los menús para diferentes momentos del día, presentando platos específicos para el desayuno, almuerzo y cena.
- Horarios de Cierre: Se muestra un mensaje especial cuando el restaurante está cerrado, proporcionando información sobre los horarios de atención y las comidas disponibles.
- Sitios de Catering o Eventos:
- Planificación de Eventos: Al utilizar shortcodes, se pueden definir menús personalizados para eventos específicos, adaptando la oferta de alimentos según las preferencias y la hora del día.
- Blogs de Estilo de Vida y Salud:
- Contenido Dinámico: Blogueros que comparten recetas y consejos de alimentación pueden utilizar este sistema para destacar recetas específicas para cada momento del día.
- Mensaje de Cierre: Pueden proporcionar información sobre horarios recomendados para cada tipo de comida.
- Websites de Comida a Domicilio:
- Ofertas Especiales: Plataformas de entrega de alimentos pueden destacar ofertas especiales para cada comida, alentando a los usuarios a realizar pedidos según el momento del día.
- Notificación de Cierre: Informar a los usuarios sobre los horarios de cierre y sugerir la realización de pedidos anticipados.
Beneficios del Sistema:
- Personalización Dinámica: Permite a los administradores adaptar los menús de manera dinámica, proporcionando una experiencia personalizada a los visitantes del sitio web.
- Flexibilidad con Shortcodes: La inclusión de shortcodes facilita la personalización de menús para eventos específicos o promociones especiales.
- Comunicación Efectiva: Ofrece un mensaje claro cuando el establecimiento está cerrado, proporcionando información útil sobre horarios de atención y momentos recomendados para cada tipo de comida.
- Presentación Atractiva: Los estilos CSS personalizados mejoran la presentación visual de los menús, brindando una experiencia de usuario más atractiva.
Este código proporciona una solución práctica y adaptable para sitios web basados en WordPress que desean ofrecer una experiencia de usuario única y personalizada en el ámbito de la gastronomía y la alimentación.

El siguiente código tienes que agregarlo en el functions.php de tu tema hijo o utilizar un plugin como CODE SNIPPETS.
<?php
// Función para obtener el momento del día según la hora actual
function obtener_momento_del_dia() {
$hora_actual = date('G'); // Obtener la hora actual en formato de 24 horas
if ($hora_actual >= 6 && $hora_actual < 10) {
return 'desayuno';
} elseif ($hora_actual >= 12 && $hora_actual < 16) {
return 'almuerzo';
} elseif ($hora_actual >= 20 && $hora_actual < 23) {
return 'cena';
} else {
return 'otros';
}
}
// Función para mostrar menús dinámicos en función del shortcode
function mostrar_menu_dinamico($atts) {
// Parsear los atributos del shortcode
$atributos = shortcode_atts(
array(
'desayuno' => '',
'almuerzo' => '',
'cena' => '',
),
$atts
);
// Obtener el momento del día según la hora actual
$momento_del_dia = obtener_momento_del_dia();
// Verificar si se proporcionaron menús personalizados en el shortcode
if (!empty($atributos[$momento_del_dia])) {
$items = explode(',', $atributos[$momento_del_dia]);
return mostrar_menu($items, "Menú del $momento_del_dia del día");
} else {
// Definir los menús en un array asociativo
$menus = array(
'desayuno' => array(),
'almuerzo' => array(),
'cena' => array(),
);
// Verificar si el momento del día existe en los menús
if (isset($menus[$momento_del_dia])) {
return mostrar_menu($menus[$momento_del_dia], "Menú de $momento_del_dia");
} else {
return mostrar_menu_otros();
}
}
}
// Función para mostrar un menú
function mostrar_menu($items, $titulo) {
$output = "<div class='menu-container'>";
$output .= "<h2>$titulo</h2><ul>";
foreach ($items as $item) {
$output .= "<li>$item</li>";
}
$output .= '</ul></div>';
return $output;
}
// Función para mostrar un mensaje para otros momentos del día
function mostrar_menu_otros() {
$mensaje = '<div class="otros-menu-container">';
$mensaje .= '<h2>Menú Otros Momentos del Día</h2>';
$mensaje .= '<p>Actualmente, el restaurante está cerrado. Consulta nuestros horarios para disfrutar de nuestros deliciosos menús.</p>';
$mensaje .= '<ul>';
$mensaje .= '<li>Desayuno: 6:00 AM - 10:00 AM</li>';
$mensaje .= '<li>Almuerzo: 12:00 PM - 4:00 PM</li>';
$mensaje .= '<li>Cena: 8:00 PM - 11:00 PM</li>';
$mensaje .= '</ul></div>';
return $mensaje;
}
// Agregar estilos CSS al head de la página
function agregar_estilos_menu() {
echo '<style>
.menu-container {
border: 1px solid #ddd;
padding: 10px;
margin: 10px 0;
background-color: #f9f9f9;
}
.otros-menu-container {
border: 1px solid #ddd;
padding: 20px;
margin: 20px 0;
background-color: #fafafa;
}
h2 {
color: #333;
}
ul {
list-style-type: none;
padding: 0;
}
li {
margin-bottom: 5px;
}
</style>';
}
// Registra el shortcode y agrega los estilos al head
add_shortcode('mostrar_menu_dinamico', 'mostrar_menu_dinamico');
add_action('wp_head', 'agregar_estilos_menu');
Lenguaje del código: HTML, XML (xml)
Entendiendo el Código
1. Función obtener_momento_del_dia()
Esta función obtiene el momento del día actual basándose en la hora actual. La hora se obtiene utilizando la función date('G'), que devuelve la hora actual en formato de 24 horas. Luego, se compara con rangos de horas para determinar si es tiempo de desayuno, almuerzo, cena o «otros». El momento del día se devuelve como resultado.
2. Función mostrar_menu_dinamico($atts)
Esta función es un shortcode que puede usarse en el contenido de WordPress. Toma atributos opcionales que pueden definir menús personalizados para desayuno, almuerzo y cena. Luego, utiliza la función obtener_momento_del_dia() para determinar el momento actual y mostrar el menú correspondiente, ya sea el definido por el shortcode o uno predeterminado.
3. Función mostrar_menu($items, $titulo)
Esta función toma un array de elementos ($items) y un título ($titulo) para construir un bloque HTML que representa un menú. Los elementos del menú se recorren en un bucle y se incorporan a una lista desordenada (<ul>).
4. Función mostrar_menu_otros()
Esta función devuelve un mensaje especial y un conjunto de horarios predefinidos para desayuno, almuerzo y cena cuando no hay menú definido para el momento actual.
5. Función agregar_estilos_menu()
Esta función imprime estilos CSS en el encabezado de la página para mejorar la presentación visual de los menús.
6. Hooks y Acciones
add_shortcode('mostrar_menu_dinamico', 'mostrar_menu_dinamico'): Registra el shortcodemostrar_menu_dinamico.add_action('wp_head', 'agregar_estilos_menu'): Agrega los estilos CSS al encabezado de la página.
Uso del Shortcode
[mostrar_menu_dinamico desayuno="Café, Tostadas" almuerzo="Ensalada, Pasta" cena="Sopa, Filete"]
Lenguaje del código: JSON / JSON con comentarios (json)
Estructura del Shortcode:
[mostrar_menu_dinamico]: Este es el shortcode principal que activa la funciónmostrar_menu_dinamico.
Atributos del Shortcode:
desayuno="Café, Tostadas": Define el menú para el momento del desayuno. En este caso, el desayuno incluirá café y tostadas.almuerzo="Ensalada, Pasta": Define el menú para el momento del almuerzo. Se presenta una ensalada y pasta como opciones de almuerzo.cena="Sopa, Filete": Define el menú para el momento de la cena. La cena incluirá sopa y filete.
En resumen, este conjunto de funciones crea un sistema dinámico de menús en WordPress que se adapta según el momento del día. Permite la personalización mediante shortcodes y proporciona un mensaje especial para momentos del día no cubiertos. Además, mejora la presentación visual mediante estilos CSS.
Si necesitas adaptar el código a las necesidades de tu proyecto o agregar una funcionalidad específica a tu página web no dudes en contactar conmigo.
Nos vemos en el siguiente tutorial.
Un saludo.




Deja tus opiniones o dudas en los comentarios.