Open
Overview of the issue
When creating an event with a registration limit with WP Event Manager and its WP Event Manager – Registrations addon, the registration limit is not synchronized between languages.
Workaround
Please, make sure of having a full site backup of your site before proceeding.
- Open …/wp-content/plugins/wp-event-manager-registrations/wp-event-manager-registrations-functions.php file.
- Look for line 497.
- Replace:
12345678910111213141516
if
(!function_exists(
'get_event_registration_count'
)) {
/**
* Get number of registrations for a event
* @param int $event_id
* @return int
*/
function
get_event_registration_count(
$event_id
) {
return
sizeof(get_posts(
array
(
'post_type'
=>
'event_registration'
,
'post_status'
=>
array_merge
(
array_keys
(get_event_registration_statuses()),
array
(
'publish'
)),
'posts_per_page'
=> -1,
'fields'
=>
'ids'
,
'post_parent'
=>
$event_id
)));
}
}
- With:
123456789101112131415161718192021222324252627
if
(!function_exists(
'get_event_registration_count'
)) {
/**
* Get number of registrations for a event
* @param int $event_id
* @return int
*/
function
get_event_registration_count(
$event_id
) {
// WPML workaround for compsupp-7562 - Part I
$translations
= apply_filters(
'wpml_get_element_translations'
, null,
$event_id
,
'post_'
. get_post_type(
$event_id
) );
// Extract the IDs of the translated posts
$event_ids
=
array_map
(
function
(
$translation
) {
return
$translation
->element_id;
},
$translations
);
// Get event registrations for all translations
return
sizeof(get_posts(
array
(
'post_type'
=>
'event_registration'
,
'post_status'
=>
array_merge
(
array_keys
(get_event_registration_statuses()),
array
(
'publish'
)),
'posts_per_page'
=> -1,
'fields'
=>
'ids'
,
'post_parent__in'
=>
$event_ids
// Get all registrations for the event IDs
)));
}
}
- Then, look for line 595.
- Replace:
12345678910111213141516171819202122232425
if
(!function_exists(
'user_has_registered_for_event'
)) {
/**
* See if a user has already appled for a event
* @param int $user_id, $event_id
* @return int
*/
function
user_has_registered_for_event(
$user_id
,
$event_id
) {
if
(!
$user_id
) {
return
false;
}
return
sizeof(get_posts(
array
(
'post_type'
=>
'event_registration'
,
'post_status'
=>
array_merge
(
array_keys
(get_event_registration_statuses()),
array
(
'publish'
)),
'posts_per_page'
=> 1,
'fields'
=>
'ids'
,
'post_parent'
=>
$event_id
,
'meta_query'
=>
array
(
array
(
'key'
=>
'_attendee_user_id'
,
'value'
=> absint(
$user_id
)
)
)
)));
}
}
- With:
123456789101112131415161718192021222324252627282930313233343536
if
(!function_exists(
'user_has_registered_for_event'
)) {
/**
* See if a user has already appled for a event
* @param int $user_id, $event_id
* @return int
*/
function
user_has_registered_for_event(
$user_id
,
$event_id
) {
if
(!
$user_id
) {
return
false;
}
// WPML Workaround for compsupp-7562 - Part II
$translations
= apply_filters(
'wpml_get_element_translations'
, null,
$event_id
,
'post_'
. get_post_type(
$event_id
) );
// Extract the IDs of the translated posts
$event_ids
=
array_map
(
function
(
$translation
) {
return
$translation
->element_id;
},
$translations
);
// Check if the user is registered for any translation of the event
return
sizeof(get_posts(
array
(
'post_type'
=>
'event_registration'
,
'post_status'
=>
array_merge
(
array_keys
(get_event_registration_statuses()),
array
(
'publish'
)),
'posts_per_page'
=> 1,
'fields'
=>
'ids'
,
'post_parent__in'
=>
$event_ids
,
// Check all event translations
'meta_query'
=>
array
(
array
(
'key'
=>
'_attendee_user_id'
,
'value'
=> absint(
$user_id
)
)
)
))) > 0;
}
}