I’m Event Espresso’s lead developer. Cool to see what you are working on. I have not used Data Bricks but it looks really interesting.
So in regard to your run_new_query() function:
/* Return results from our custom WP Query arguments */
function run_new_query() {
/* Add all of your WP_Query arguments here */
// set up show expired = false
$where = array(
'Datetime.DTT_EVT_end' => array( '>=', current_time( 'mysql' ))
// 'status' => 'publish',
// 'post_type' => 'espresso_events'
);
// run the query
if ( class_exists( 'EE_Registry' ) ) :
$events = EE_Registry::instance()->load_model( 'Event' )->get_all( array(
$where,
'limit' => 1,
'order_by' => 'Datetime.DTT_EVT_start',
'order' => 'ASC',
'group_by' => 'EVT_ID'
// 'suppress_filters' => false
));
// the query
global $wp_query;
$posts_query = new EventEspresso\core\domain\services\wp_queries\EventListQuery( $events );
return $posts_query->posts;
endif;
};
the reason the query parameters added to the EEM_Event::get_all() query are not working is because you are actually not using the results of that query at all. You are taking the results of that query, which is an array of EE_Event objects, and passing it to the EventListQuery constructor, which does not accept an array of EE_Event objects. The EventListQuery constructor receives an array of attributes (typically coming from the ESPRESSO_EVENTS shortcode) which are THEN used to generate query parameters.
Here’s a couple of examples of how EventListQuery is used:
* EventEspresso\core\domain\entities\shortcodes\EspressoEvents::processShortcode()
* espresso_get_events() (found in /public/template_tags.php)
There’s two potential paths forwards for you that I can see:
1. use EE_Events directly
I’m not sure if this will work because I don’t know if Data Bricks will accept anything other than an array of WP_Posts, but you could simply try returning the results of your initial query from your run_new_query() function and NOT use EventListQuery at all.
So just try the following instead (please note that I simplified how the model is obtained):
the second option, which is pretty guaranteed to work, would be to NOT use the Event model to query for events, but instead pass your query parameters to EventListQuery and let it perform the query. So get rid of the call to EEM_Event::get_all() and do something like the following instead:
which I’m guessing should work the way you are expecting, but really is not very different than what was already happening since you were unknowingly using the defaults set up for that class. The only real difference between your query parameters above and the defaults is that you have set the limit to 1 (which means you should only see ONE event returned, not sure if that’s what you really want or not).
Now all of that said, I’m concerned by this comment you made:
While my code does display upcoming espresso events, my arguments (such as order_by, limit, etc) are not having any effect.
because again, your query parameters being passed to EEM_Event::get_all() were not far off from the defaults used by EventListQuery so you should have at least seen the correct event order. Now if you meant that changing the query parameters you passed to EEM_Event::get_all() had no effect (like setting the order to DESC), then THAT makes sense, since again, you were essentially not using the results of that query.
Anyways, I would try option 1 (use EE_Events directly) first and see if Data Bricks will accept an array of EE_Events (I’m guessing they won’t though) because it will be easier for you to manipulate that query, since you will have direct access to the query with nothing else modifying it. Check out plugins/event-espresso-core/docs/G--Model-System/model-query-params.md for more info about querying using our models.
IF that doesn’t work, then try option 2 and just use EventListQuery but that will be a little less flexible since you will be modifying a WordPress main query and will have to work within the confines of that system.
Good luck, let us know what happens
This reply was modified 1 year, 3 months ago by Brent Christensen. Reason: fix typos
This reply was modified 1 year, 3 months ago by Brent Christensen. Reason: formatting
This reply was modified 1 year, 3 months ago by Brent Christensen. Reason: more better formatting
Thanks Brent, I’m having some luck with the second option, EventListQuery. It’s a simple solution, and I don’t think I’ll need anything else.
The only real difference between your query parameters above and the defaults is that you have set the limit to 1 (which means you should only see ONE event returned, not sure if that’s what you really want or not).
Just used “1” when I was testing those arguments to see if they were sticking (it wasn’t), now I know why 👊.
The support post ‘Build an Events Loop / Query in Bricks Builder’ is closed to new replies.
Have a question about this support post? Create a new support post in our support forums and include a link to this existing support post so we can help you.
Support forum for Event Espresso 3 and Event Espresso 4.