Home › Forums › Front-end Issues › Multiple date-conditions via array
Yes I’m still trying and no I still haven’t found the answer.
I have posted multiple times on the ACF forms, I even created an official ACF ticket, I posted multiple times on Stack…
Really don’t understand why people are not willing to help me with the few lines of code but I guess that’s just the way it works 🙁
My final try and then I have to quit. Not because I want, but because I have to because the final key is missing to complete the puzzle.
What if I send you $75,- via PayPal (up front) would you then help me?
This working code:
// Apply conditions to fields
add_filter('acf/prepare_field/name=booking_time_session_1', 'yl_check_booking_setting_exceptions');
function yl_check_booking_setting_exceptions($field){
if ( have_rows('booking_setting_exceptions', 'booking_settings') ) {
while ( have_rows('booking_setting_exceptions', 'booking_settings') ) {
the_row();
if (get_sub_field('booking_setting_exceptions_session', 'booking_settings') == '1' ) {
$date = date_i18n('Ymd', strtotime(get_sub_field('booking_setting_exceptions_date', 'booking_settings')));
// Bail early if no option date found
if (empty($date)) {
return $field;
}
// Add the condition to the field
$field['conditional_logic'] = array(
array(
array(
'field' => 'field_5ed4181bd63dc', // Time field session 1 in the form
'operator' => '==', // If Value is different, then show the field
'value' => '1', // Compare against session option page value
),
array(
'field' => 'field_5ed4178dd63d7', // Time field session 1 in the form
'operator' => '!=', // If Value is different, then show the field
'value' => $date, // Compare against date option page value
)
)
);
}
}
}
// Return
return $field;
}
gives me this data-condition output:
data-conditions="[[{"field":"field_5ed4181bd63dc","operator":"==","value":"1"},{"field":"field_5ed4178dd63d7","operator":"!=","value":"20200625"}]]"
20200625 is the last date (row) of 3 rows in the repeater field.
I simply want this part [{"field":"field_5ed4181bd63dc","operator":"==","value":"1"},{"field":"field_5ed4178dd63d7","operator":"!=","value":"20200625"}]
multiple times separated with comma so all conditions will be active.
Can I hire you this? Someone with your knowledge of ACF should fix this in no time 🙂
If not… Anybody else around I can hire for this?
I really cannot tell what you’re trying to accomplish. I have reread your previous topic as well, but I cannot get a clear enough picture of it with the information you’ve provided.
With that in mind, here is a guess. If this does not work then you’ll need to give a clearer picture of what you are working with.
// Apply conditions to fields
add_filter('acf/prepare_field/name=booking_time_session_1', 'yl_check_booking_setting_exceptions');
function yl_check_booking_setting_exceptions($field){
$conditions = array();
if (have_rows('booking_setting_exceptions', 'booking_settings')) {
while (have_rows('booking_setting_exceptions', 'booking_settings')) {
the_row();
if (get_sub_field('booking_setting_exceptions_session') == '1') {
$date = date_i18n('Ymd', strtotime(get_sub_field('booking_setting_exceptions_date', 'booking_settings')));
if (empty($date)) {
// no date, skip this row
continue;
}
// Add the condition to the field
$conditions[] = array(
array(
'field' => 'field_5ed4181bd63dc', // Time field session 1 in the form
'operator' => '==', // If Value is different, then show the field
'value' => '1', // Compare against session option page value
),
array(
'field' => 'field_5ed4178dd63d7', // Time field session 1 in the form
'operator' => '!=', // If Value is different, then show the field
'value' => $date, // Compare against date option page value
)
);
} // end if (get_sub_field('booking_setting_exceptions_session') == '1')
} // end while have_rows
} // end if have_rows
$field['conditional_logic'] = $conditions;
// Return
return $field;
}
That’s exactly what I need!!!!!!!!!
I only guess my conditional logic is not thought thru correctly… Because the date-conditions are all there (WOOOHOOOOOOO 😉 but the fields react different than what I was exception.
OPTION PAGE has the following fields
BOOKING EXCEPTIONS FIELD (repeater) with 2 sub fields:
DATE FIELD = booking_setting_exceptions_date
SESSION FIELD = booking_setting_exceptions_session
FRONTEND FORM has the following fields
DATE FIELD = field_5ed4178dd63d7
SESSION FIELD = field_5ed4181bd63dc
So what I want is that when the DATE and SESSION fields (from option page) match with the DATE and SESSION fields (from user input in frontend form) the field booking_time_session_1 should be hidden.
In simple words: Within the option page I want to be able to disable specific dates with specific time sessions.
// Apply conditions to fields
add_filter('acf/prepare_field/name=booking_time_session_1', 'yl_check_booking_setting_exceptions');
function yl_check_booking_setting_exceptions($field){
$conditions = array();
if (have_rows('booking_setting_exceptions', 'booking_settings')) {
while (have_rows('booking_setting_exceptions', 'booking_settings')) {
the_row();
$date = date_i18n('Ymd', strtotime(get_sub_field('booking_setting_exceptions_date', 'booking_settings')));
$session = get_sub_field('booking_setting_exceptions_date', 'booking_settings');
if (empty($date)) {
// no date, skip this row
continue;
}
// Add the condition to the field
$conditions[] =
array(
array(
'field' => 'field_5ed4178dd63d7', DATE field in the form
'operator' => '!=', // If Value is different, then show the field
'value' => $date, // DATE option page value
),
array(
'field' => 'field_5ed4181bd63dc', // SESSION field in the form
'operator' => '!=', // If Value is different, then show the field
'value' => $session, // SESSION option page value
)
);
} // end while have_rows
} // end if have_rows
$field['conditional_logic'] = $conditions;
// Return
return $field;
}
The topic ‘Multiple date-conditions via array’ is closed to new replies.
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!
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 Privacy Policy. If you continue to use this site, you consent to our use of cookies.