Time Condition for Beaver Themer Conditional Logic

1 . Create a shortcode to compare the current time to a specific time range, and return true or false.
start and end time are set in shortcode parameters, making it re-usable.

add_shortcode('check_time_range', 'check_time_range_shortcode');
function check_time_range_shortcode($atts) {
    $atts = shortcode_atts([
        'start' => '',
        'end'   => '',
    ], $atts);

    // Set timezone to France
    $timezone = new DateTimeZone('Europe/Paris');

    if (empty($atts['start']) || empty($atts['end'])) {
        return 'false';
    }

    try {
        // Create DateTime objects in France timezone
        $start_dt = new DateTime($atts['start'], $timezone);
        $end_dt   = new DateTime($atts['end'], $timezone);
        $now_dt   = new DateTime('now', $timezone);

        // Convert to timestamps
        $start_ts = $start_dt->getTimestamp();
        $end_ts   = $end_dt->getTimestamp();
        $now_ts   = $now_dt->getTimestamp();
    } catch (Exception $e) {
        return 'false';
    }

    // Compare using timestamps
    return ($now_ts >= $start_ts && $now_ts <= $end_ts) ? 'true' : 'false';
}

2 . Use shortcode in BT Conditional Logic

Example:

[check_time_range start="2025-05-13 08:00" end="2025-05-13 20:00"]

That’s it, the BB item the condition is set on should show up at the start time specified in the shortcode, and removed at the end time.

1 Like

Warning
This time condition running server-side is not 100% reliable, it can fail because of caching interfering.
A JS solution, running client-side, is more reliable.