La nueva versión de CoockieConsent de Orest Bida, en este caso la V3, que ofrece mayores funcionalidades y mayor capacidad de personalización.
Se trata de mostrar una sección, un div, un texto o cualquier elemento entre un rango de tiempo determinado, este tiempo lo estableceremos entre una fecha y hora de inicio y una fecha y hora de finalizado.
En Oxygen lo incrustaremos mediante un elemento "ShortCode Wrapper".
Vamos a proponer dos códigos diferentes que realizarán la exactamente la misma función en el frontend, la diferencia solo será la forma en la que se establecen las fechas y horas tanto de inicio como de finalizado; entendiendo la fecha de hora y hora de inicio cuando el elemento que queremos manejar empieza a ser mostrado, y la fecha y hora de finalizado será cuando el elemento dejará de ser mostrado en el frontend.
Un caso práctico a modo de ejemplo podría ser el anuncio de una oferta o promoción que esté vigente entre unos días determinados, como podrían ser los Prime Days de Amazon.
El código php se puede incrustar bien en la sección de php/HTML de un elemento Code Block o bien con un script en un gestor de snippets como WpCodeBlock.
En la primera de las opciones propuestas los datos de fecha y hora serán introducidos desde el mismo shortcode, a nuestro entender algo engorroso y mas propenso a cometer errores debido a la limitación visual de la caja de entrada de datos del elemento shortcode.
Código Primera Opción
Insertar un elemento Code Block y dentro de la sección PHP&HTML pegar el código de abajo.
<?php
function mostrar_sobre_fecha_shortcode($atts, $content = null) {
extract(shortcode_atts(array(
'inicio_fecha' => '',
'inicio_hora' => '',
'fin_fecha' => '',
'fin_hora' => ''
), $atts));
$zona_horaria = new DateTimeZone(get_option('timezone_string'));
$fecha_actual = new DateTime('now', $zona_horaria);
$inicio_fecha_hora = new DateTime($inicio_fecha . ' ' . $inicio_hora, $zona_horaria);
$fin_fecha_hora = new DateTime($fin_fecha . ' ' . $fin_hora, $zona_horaria);
if ($fecha_actual >= $inicio_fecha_hora && $fecha_actual <= $fin_fecha_hora) {
return $content;
} else {
return '';
}
}
add_shortcode('oxygenados_rep', 'mostrar_sobre_fecha_shortcode');
?>
En la zona donde queremos mostrar el elemento que se mostrará / ocultará añadimos un elemento "Shortcode Wrapper"
Copiamos y pegamos el código del shortcode de abajo entro de la caja de datos, cambiando los datos de fecha y hora de inicio y de fin por los correspondientes a los que necesites, pero siempre respetando el formato de fecha “año-mes-dia” para las fechas y “hora:minutos” para las horas y siempre encerrando los datos entre comillas.
[oxygenados_rep inicio_fecha="2023-07-01" inicio_hora="09:00" fin_fecha="2023-07-16" fin_hora="00:27"]Contenido[/oxygenados_rep]
Ahora dentro de la jerarquía del Shortcode Wrapper añadimos todos los elementos que se necesiten y serán mostrodos/ocultados, ver imagen de abajo.
Código Segunda Opción
Es exactamente el mismo procedimiento que el anterior, solo varía el código, y será aquí en el código donde estableceremos los datos fecha y hora para el inicio y fin.
Para ello se modificarán los valores por los adecuados de las variables $incio_fecha, $inicio_hora, $fin_fecha y $fin_hora y como siempre, respetando los formatos y que estén dentro de las comillas.
<?php
function fecha_hora_shortcode($atts, $content = null) {
$inicio_fecha= '2023-07-16';
$inicio_hora ='00:16';
$fin_fecha='2023-07-16';
$fin_hora ='00:28';
$zona_horaria = new DateTimeZone(get_option('timezone_string'));
$fecha_actual = new DateTime('now', $zona_horaria);
$inicio_fecha_hora = new DateTime($inicio_fecha . ' ' . $inicio_hora, $zona_horaria);
$fin_fecha_hora = new DateTime($fin_fecha . ' ' . $fin_hora, $zona_horaria);
if ($fecha_actual >= $inicio_fecha_hora && $fecha_actual <= $fin_fecha_hora) {
return $content;
} else {
return '';
}
}
add_shortcode('oxygenados_short', 'fecha_hora_shortcode');
?>
En la zona donde queremos mostrar el elemento que se mostrará / ocultará añadimos un elemento "Shortcode Wrapper"
Copiamos y pegamos el código del shortcode de abajo entro de la caja de datos, pero en este caso no es necesario editar nada aquí ya que los datos los toma del propio codigo php.
[oxygenados_short]Contenido[/oxygenados_short ]
Y procedemos igualmente que en el caso anterior a añadir los elementos necesarios.
Como siempre esperamos tus comentarios y por supuesto si tienes alguna duda o necesitas ayuda puedes contactar por nuestro grupo de Telegram o dejando un comentario.
Nos vemos en la próxima. 👌