- Statut
- En attente de l’auteur
- Extension/thème associé
- WP Event Manager
- Étiquettes de sujet
- Compatibility
Aperçu de l’anomalie
Lors de la création d’un événement avec une limite d’inscription à l’aide de WP Event Manager et de son module complémentaire WP Event Manager – Registrations, la limite d’inscription n’est pas synchronisée entre les langues.
Solution de contournement
Veuillez vous assurer d’avoir une sauvegarde complète de votre site avant de continuer.
- Ouvrez le fichier …/wp-content/plugins/wp-event-manager-registrations/wp-event-manager-registrations-functions.php.
- Cherchez la ligne 497.
- Remplacez :
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 ))); } } - Par :
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 $element_type = 'post_' . get_post_type( $event_id ); $trid = apply_filters( 'wpml_element_trid', null, $event_id, $element_type ); $translations = apply_filters( 'wpml_get_element_translations', null, $trid , $element_type ); // 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 ))); } } - Ensuite, cherchez la ligne 595.
- Remplacez :
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) ) ) ))); } } - Par :
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 $element_type = 'post_' . get_post_type( $event_id ); $trid = apply_filters( 'wpml_element_trid', null, $event_id, $element_type ); $translations = apply_filters( 'wpml_get_element_translations', null, $trid , $element_type ); // 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; } }