- Stato
- In attesa dell’autore
- Plugin/tema correlato
- WP Event Manager
- Tag dell’argomento
- Compatibility
Panoramica del problema
Quando crei un evento con un limite di registrazione tramite WP Event Manager e il suo componente aggiuntivo WP Event Manager – Registrations, il limite di registrazione non è sincronizzato tra le lingue.
Soluzione alternativa
Assicurati di avere un backup completo del sito prima di procedere.
- Apri il file …/wp-content/plugins/wp-event-manager-registrations/wp-event-manager-registrations-functions.php.
- Cerca la riga 497.
- Sostituisci:
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 ))); } } - Con:
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 ))); } } - Quindi, cerca la riga 595.
- Sostituisci:
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) ) ) ))); } } - Con:
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; } }