
Jon H
Hi –
I am wading through a whole load of Event Bookings plugins, trying to find one that is suitable for our customer. I have installed and played with the free version of this one – and it looks good. I have a couple of questions.
The customer runs a series of courses (both single and multi day) and needs to take bookings. Initially this will just be reserving places and then paying online (Stripe). That all seems doable.
The questions are:
1) He runs a lot of courses – they have a small number of tickets for each. What we’d like is for the calendar to change the way the course is shown on the calendar (which will be the main interface for the customers) so that it is ‘greyed out’ and perhaps ‘unclickable’ when all of the tickets for that course have been sold. That means they can see at a glance what is still available.
2) Rather than opening a new page to show the course details (which will actually be thoroughly described on the page where the calendar lives), we’d want to bring up a booking form – very simple, with their details and how many tickets they want – as a pop up so they aren’t taken off to another page.
3) He offers different price points for some courses i.e. if you buy one place on the course then it is £500 but block book 5 places and it’s £300 per ticket. Is that possible with the booking part of this plugin?
Thanks very much – Jon

Robert Stankey
I have a recurring event that was created in June 2021 and continues once per week through June 2022. The booking form shows the recurring events under “Upcoming Dates” into 2022 but the date picker pop-up menu is not showing any dates beyond 12/31/21. I have another recurring event with a similar time horizon and it is showing dates correctly.
What is the criteria for the pop-up menu deciding whether to show a recurring date or not?
Thanks,
Robert

Stephen Harris
Hi Joe,
For errors to appear you’ll need to add them to a form element (e.g. the ticketpicker element):
<?php
add_action( 'eventorganiser_validate_booking_submission', function( $input, $form, $errors ){
// Prevent booking more than 2 tickets
$ticketpicker = $form->get_element( 'ticketpicker' );
$tickets = count($ticketpicker->get_value());
if($tickets > 2) {
$ticketpicker->add_error( 'too_many_tickets', 'You may only book 1 ticket for this event.' );
return $input;
}
// Prevent multiple confirmed bookings
$event_id = $input['event_id'];
$occurrence_id = $input['occurrence_id'];
$confirmed = eventorganiser_get_bookings( array(
'status' => eo_get_confirmed_booking_statuses(),
'fields'=>'ids',
'occurrence_id'=> $occurrence_id,
'event_id'=> $post->ID
));
$ticketpicker = $form->get_element( 'ticketpicker' );
if(count($confirmed) > 0) {
$ticketpicker->add_error( 'too_many_bookings', 'This event is no longer accepting bookings.' );
}
return $input;
}, 20, 3);
<
p>“`</p>
<p>.</p>

Stephen Harris
No, events can have any any number of bookings.
Bookings are created in the post table, but they joined to events via the eo_booking_tickets table. The booking ID and event ID (and occurrence ID) are indexed on that table to allow for quick look-ups. Computing of available spaces is also cached, as that will need to pull out all confirmed bookings for an event.
You may want to perform load tests, however. As for any given CPU/memory there will come a point where it will struggle. Additionally a lot depends on what other plug-ins you have running and what they might be doing.

Rene Kroes
Hi,
Besides from the limits that we set for the number of tickets available, is there a technical limit to the number of tickets/reservations made for a single event?
Can I use this for an event where I expect to have 3000 registrations?
thanks in advance!

Joe Fairlamb
Hi Stephen, Im trying to implement this code so that I can both limit purchasers to 2 tickets max. I have added it to my functions.php as follows but currently have the following issues:
- does not prevent more than 2 tickets being purchased in 1st transaction
- does prevent second transaction but does not show error message
any help would be much appreciated, cheers!
function xmas2021_limit_tickets_in_booking( $input, $form, $errors ){
$input = $input + array( 'event_id' => 0, 'occurrence_id' => 0, 'gateway' => false, 'tickets'=>array() );
$tickets = $input['tickets'];
$post_id = $input['event_id'];
$occurrence_id = $input['occurrence_id'];
/* $tickets is an array ( ticket type ID => quantity purchased ).
Remove ticket types that have not been selected (0 quantity) */
$tickets = array_filter( $tickets );
/* Throw error if user has previously made a booking for this event */
if( eo_user_has_bookings( get_current_user_id(), $post_id, $occurrence_id ) ){
//This error will prevent the booking from being processed, and display the given error message
$errors->add( 'previous_booking', 'You have already bought tickets for this event.' );
}
/* Count how many tickets are in this booking */
$total_qty =0;
if ( $tickets ) {
$total_qty = array_sum( $tickets );
}
/* Throw error if booking contains multiple tickets */
if( $total_qty > 2 ){
$errors->add( 'too_many_tickets', 'You can only purchase two tickets maximum.' );
}
return $input;
}
add_action( 'eventorganiser_validate_booking_submission', 'xmas2021_limit_tickets_in_booking', 20, 3 );
-
This reply was modified 4 years, 4 months ago by
Joe Fairlamb.

Stephen Harris
Hi,
It also sets the cookie eopBookingSession when a booking is made. This doesn’t store any user data, only a signed token containing the booking ID. This is solely used to determine that a booking is in progress (e.g. if the user is redirected to another site as part of the booking process, or if they refresh the page while booking).
This type of cookie arguably falls into the security/authentication usage, so probably doesn’t need consent (at least on my reading of the ICOs guidance, though I appreciate that is only applicable to the UK). Nor can it be disabled. It is only set when you create a booking.
As for Google maps, I don’t think it stores cookies (see https://mapsplatform.googleblog.com/2011/10/a-grab-bag-of-maps-api-news.html) – I’ve checked my local test site and I couldn’t see any cookies being stored.

Stephen Harris
Sorry Sven, I’ve been trying to replicate this without success. Are you able to provide a link to an event, so I can verify there are no errors in the booking UI that might prevent the booking email from being sent? If you don’t want to publish it here, you can use this form: https://wp-event-organiser.com/contact
The other thing you can do is enable this plugin to verify that emails are not being sent rather than not being received..

Stephen Harris
Hi Kamil,
If this is an existing booking form, you might need to re-order it and re-save a couple of times.
If it persists to incorrectly order the fields, let me know and I’ll be in touch to investigate this further for you.

Kamil Konečný
Hellloi Stephen,
I’m fighting with the issue about mailing bookies. I as a organiser get the information about new booking but the bookie not recieve any mail from the system. I try to send them email by “Email bookees” but the bookie not recieve it.
I had installed the latest EO version (3.10.7 and 3.2.0 of PRO) on WordPress 5.7.2.
May be will be also good to have option in “Email bookees” to send copy to event organiser.
Thanks for looking on the problem Kamil

Rolf Hillen
Hi Stephen,
we have a very similiar problem. We show the events in an accordion via eo_events shortcode and a customized shortcode-event-list.php. There is also an initial event_booking_form_id shortcode on that page.
When opening the accordion, we replace this initial form via ajax by an new event_booking_form event_id shortcode (with the id of the selected accordion tab).
Though that didn’t solve the problem, I guess because of the javascript. Do you see any way to make this work?
Thanks
Rolf

Stephen Harris
Hi,
The latest version of Pro should resolve this issue. You may need to re-order and re-save the booking form twice before it is corrected.
The issue was due to relying on index of the element which proved to be unreliable. There is now an explicit ordering. After the first save the elements should have that property, and you should then be able to reorder the elements again to the correct position and save them.

Stephen Harris
Hi Michael,
Unfortunately not. You could use some javascript to pre-fill the first set of fields, or CSS to hide them. But the plug-in doesn’t assume that the user making the booking is necessarily an attendee (or that the attendee fields are asking for the same information asked for on the booking).

Stephen Harris
No, pending events are not visible on the public calendar.
If you wanted them to be public you could register a custom post status and automatically assign them that status. However, any logic (e.g. allowing or not allowing bookings) for a particular event status would have to be implemented yourself.
Events are just a post type, so you can use register_post_type (https://developer.wordpress.org/reference/functions/register_post_status) to register a new post type with 'public' set to true. It should then behave like a “confirmed” event. If you wanted to prevent bookings for an event with that new post type you could change the booking form template to remove the form. (templates/eo-booking-form.php)

Stephen Harris
Hi Anders,
Event Organiser Pro used to ship with the ‘wp-hooks’ javascript library before it was included in WordPress itself. Its a javascript “port” of the PHP filters/actions and was included to allow extensions to modify the booking form (e.g. so discount codes extension could modify the total on the client side). The WordPress-bundled version is newer, and had a breaking change.
However the WordPress-bundled version of wp-hooks is not loaded by default on the front-end but where another plug-in caused it to be loaded it caused an issue (in particular discount codes appeared invalid).
The update just switched to using the WordPress-bundled version. So unless you are using discount codes – you can upgrade without any adverse effects. If you are using discount codes, just ensure you’re using the latest version of discount codes.