December 23, 2020
I recently built a website with a large featured banner on their home page, and events page. Banners information was held in a Custom Post Type, and Events were created by The Events Calendar plugin.
The client wanted to combine these two items to show all of the banners on the Home page, to more readily promote their events.
I originally thought about running two separate loops for the content … but this was a messy approach because they could have up to five of each content type, and that means it could be five slides before seeing content from the other section.
I decided to combine the arrays as follows:
$banners = get_posts(array(
'post_type' => 'banner',
'posts_per_page' => 5,
));
$events = tribe_get_events(array(
'posts_per_page' => 5,
'start_date' => current_time( 'Y-m-d' ),
'eventDisplay' => 'list', // ignores repeating events
'tribe_events_cat' => 'promoted-event' // specific category for banner display
));
$both_arrays = array_merge((array)$banners, (array)$events);
foreach($both_arrays as $post):
// banner content
endforeach;
Source for array_merge with example.