Home › Forums › Add-ons › Repeater Field › Show events if there's a date for today in a repeater › Reply To: Show events if there's a date for today in a repeater
OK, I think I’ve found the solution reading point 4. in this page:
https://www.advancedcustomfields.com/resources/query-posts-custom-fields/
now my code looks like this:
// create shortcode to list Today's events only if I have spectacles for today
add_shortcode( 'eventi-oggi', 'protorob_eventi_oggi' );
function protorob_eventi_oggi( $atts ){
ob_start();
date_default_timezone_set( 'Europe/Amsterdam' );
//shortcode attributes
extract(shortcode_atts(array(
'type' => 'eventi',
'sala' => '',
'posts_per_page' => '-1'
), $atts));
// filter
function protorob_posts_where( $where ) {
$where = str_replace("meta_key = 'tabella_spettacoli_$", "meta_key LIKE 'tabella_spettacoli_%", $where);
return $where;
}
add_filter('posts_where', 'protorob_posts_where');
$oggi = date('Y-m-d');
//query
$oggiOptions = array(
'post_type' => $type,
'sala' => $sala,
'posts_per_page' => $posts_per_page,
'meta_query'=> array(
'relation' => 'AND',
array(
'key' => 'data_inizio_evento',
'compare' => '<=',
'value' => $oggi,
'type' => 'DATE'
),
array(
'key' => 'data_fine_evento',
'compare' => '>=',
'value' => $oggi,
'type' => 'DATE'
),
array(
'key' => 'tabella_spettacoli_$_data_spettacolo',
'compare' => '=',
'value' => $oggi,
'type' => 'DATE'
)
),
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_key' => 'data_inizio_evento',
'meta_type' => 'DATE'
);
//
$oggiEventQuery = new WP_Query( $oggiOptions );
// This is for displaying today's date
$oggiform = ucfirst( date_i18n('l, j F Y') );
echo '<h2 style="text-align:center;">Programmazione ' . $oggiform . '</h2>';
//If there's events for today, display the events
if ($oggiEventQuery->have_posts()) {
echo '<div class="grid-container grid-parent">';
while ($oggiEventQuery->have_posts()):
//The post:
$oggiEventQuery->the_post();
//Getting some custom fields fr display
$periodo = get_field('periodo_evento');
$tabSpett = get_field('tabella_spettacoli');
$image = get_field('locandina_evento');
//Printing the stuff
echo '<div class="grid-33">';
//Show the thumbnail
if( !empty($image) ):
echo '<div class="thumb-spettacolo-oggi">';
echo '<a href="';
echo the_permalink();
echo '">';
echo '<img src="' . $image['url'] . '"/></a></div>';
endif;
// The Event title
echo '<h3 class="titolo-evento-oggi">' . the_title('','',false) . '</h3>';
// Display the spectacles times for that day:
if ( have_rows('tabella_spettacoli') ) :
while (have_rows('tabella_spettacoli')) :
the_row();
//Row Contents
$dataSpett = get_sub_field('data_spettacolo');
$oraSpett = get_sub_field('orario_spettacolo');
$salaSpett = get_sub_field('sala_spettacolo');
//Display only the times for today
if ($dataSpett == $oggi) :
echo '<span class="orario-singolo '. strtolower(str_replace(' ', '', $salaSpett)) .'"> ' . $oraSpett . ' - ' . $salaSpett . '</span>';
endif;
endwhile;
endif;
echo '</div>';
endwhile;
echo "</div>";
wp_reset_postdata();
$myvariable = ob_get_clean();
return $myvariable;
}else{
echo '<h3>Non ci sono eventi in programma per oggi :-( </h3>';
}
}
The only caveat is that I can only use the shortcode once in the same page 🙁
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.