php - How to use date and time ACF fields to hide the_content() based on whether time has passed
one text
I am using ACF fields which hold the closing date and closing time. I have the following variables:
$closing_date = get_field( "closing_date" );
$closing_time = get_field( "closing_time" );
$cdate = $closing_date ." " . $closing_time;
date_default_timezone_set('Africa/Nairobi');
$date2 = new DateTime("$cdate");
Now I need to hide content if time has passed. The code works well outside a function such as:
if(new DateTime() > $date2)
{?>
<span class="" style="color:white; background:grey; padding:2px; border-radius:2px;">
<?php echo "Closed"; ?></span>
<?php
}
But inside the function it won't work despite declaring the global variables
add_filter('the_content', 'hide_post_contents');
function hide_post_contents( $content ) {
global $date2;
if (new DateTime() > $date2) {
return '<h3>This content is not available </h3>
<p>Please feel free to check out other content.</p>';
}
return $content;
}
However when I add the date manually as below, it works.
add_filter('the_content', 'hide_post_contents');
function hide_post_contents( $content ) {
if (new DateTime() > new DateTime("09-03-2021 15:00")) {
return '<h3>This content is not available </h3>
<p>Please feel free to check out other content.</p>';
}
return $content;
}
Content still displays even when time has passed which is wrong. Cannot get it to work despite several attempts.
Source