Home › Forums › Add-ons › Repeater Field › Compare dates in rows against today
I have a repeater with rows containing dates.
The dates are the start of each week.
Is there a way to compare $today against the dates stored in the rows like below?
<?php if( ($today >= $last_week) && ($today <= $next_week) ){ echo "id='active_week'"; }?>
Hi @phatoz
I’m not sure I understand your query, so please forgive me if I’m wrong. Do you mean you want to check if the date you entered in the date field is within the range of 1 week (the past and future) from the current day? If that’s what you want, could you please try the following code?
$today = date('Ymd');
$last_week = $today-7;
$next_week = $today+7;
$date_field_value = get_field('date_picker', 85);
if( ($date_field_value >= $last_week) && ($date_field_value <= $next_week) ){
echo "id='active_week'";
}
Please keep in mind that you need to set the date field Return Format to “Ymd” on the field editor page.
If that’s not what you want, could you please explain it and share some examples of the issue?
Thanks 🙂
I’m very sorry for the time it has taken to respond to your reply.
I’ve used your example with a few changes:
// date starting the week of loaded treasure bag
$treasure_bag_date = get_sub_field('treasure_bag_date', 85);
$last_week = $treasure_bag_date-6;
$next_week = $treasure_bag_date+6;
<tr <?php if( ($treasure_bag_date >= $last_week) && ($treasure_bag_date <= $next_week) ){ echo "id='active_week'"; }?>>
The code is echoing all the weeks.
Here is an example https://www.gymbaroomteliza.com/treasure_bag/
Hi @phatoz
If I get it right, you should provide the current date. Also, I’m sorry I forgot to remove the number “85”. It’s just a post ID for testing purpose. So, your code should be like this:
<?php
// date starting the week of loaded treasure bag
$today = date('Ymd');
$last_week = $today-6;
$next_week = $today+6;
$treasure_bag_date = get_sub_field('treasure_bag_date');
?>
<tr <?php if( ($treasure_bag_date >= $last_week) && ($treasure_bag_date <= $next_week) ){ echo "id='active_week'"; }?>>
I hope this helps 🙂
Yes, the $today was declared further up in the code so I didn’t include it in my snippet.
I ended up using this code and it seems to work perfectly.
$treasure_bag_date = get_sub_field('treasure_bag_date');
$today = date('Ymd');
$next_week = date_create($treasure_bag_date);
$next_week = date_add($next_week, date_interval_create_from_date_string('7 days'));
$next_week = date_format($next_week, 'Ymd');?>
<?php // set #active_week to current week ?>
<tr <?php if( ($today >= $treasure_bag_date) && ($today <= $next_week) ){ echo "id='active_week'"; }?>>
You must be logged in to reply to this topic.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
ACF wouldn’t be so widely used in WordPress if it didn’t have some pretty amazing capabilities. In this article, we look at a few of the features we’ll discuss during “7 things you didn’t know you could do with ACF” at #WPEDecode later this month. https://t.co/5lnsTxp81j pic.twitter.com/Yf0ThPG1QG
— Advanced Custom Fields (@wp_acf) March 16, 2023
© 2023 Advanced Custom Fields.
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Cookie Policy. If you continue to use this site, you consent to our use of cookies.