Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Limit Slider Revolution's WP_Query to only include Featured Events that have a featured image
<?php
/**
* Limit Slider Revolution's WP_Query to only include Featured Events that have a featured image
*
* @link https://theeventscalendar.com/knowledgebase/featured-events/
*
* From https://gist.github.com/cliffordp/30ac2152a8264ef27235b46b7d16332d
* Similar code for Essential Grid: https://gist.github.com/cliffordp/a6aad3c60f469970b1ecb209d85ec755
* Same Slider Revolution code except without requirement for being a Featured Event (works for more than just The Events Calendar): https://gist.github.com/cliffordp/9f0d7cc5e86b2a721cd646d953bb1261
*
* revslider_get_posts filter is from /wp-content/plugins/revslider/includes/framework/functions-wordpress.class.php as of version 4.5.0
*
* Filter hook only applies to Slider Revolution > Post-Based Slider > Fetch Posts By Categories & Tags
* or Slider Revolution > Post-Based Slider > Specific Posts > Specific Posts List (CSV of Post IDs)
*
* @return array
*/
function revslider_post_based_featured_events_w_featured_image( $query, $slider_id ) {
/*
* YOU MUST CHANGE THESE
* TO YOUR OWN SLIDER REVOLUTION
* SLIDER IDs
* !!!
*/
$slider_ids_to_affect = array( 2, 20, 34 ); // include IDs of sliders to affect
// if this slider is not one to affect, do no filtering
if ( ! in_array( $slider_id, $slider_ids_to_affect ) ) {
return $query;
}
// get the existing meta_query so we aren't wiping that out
if ( ! empty( $query['meta_query'] ) ) {
$meta_query = (array) $query[ 'meta_query' ];
} else {
$meta_query = array();
}
// do the filtering...
// has a Featured Image
$meta_query[] = array(
'key' => '_thumbnail_id',
'compare' => 'EXISTS',
);
// is a Featured Event (requires The Events Calendar version 4.4+ from January 9, 2017)
if ( class_exists( 'Tribe__Events__Main' )
&& class_exists( 'Tribe__Events__Featured_Events' )
&& Tribe__Events__Main::POSTTYPE === $query['post_type']
) {
$meta_query[] = array(
'key' => Tribe__Events__Featured_Events::FEATURED_EVENT_KEY,
'compare' => 'EXISTS',
);
}
$query['meta_query'] = $meta_query;
return $query;
}
add_filter( 'revslider_get_posts', 'revslider_post_based_featured_events_w_featured_image', 10, 2 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment