- Trạng thái
- Đang chờ nhà phát triển
- Plugin/giao diện liên quan
- WP Event Manager
- Thẻ chủ đề
- Compatibility
Tổng quan về lỗi
Khi tạo một sự kiện có giới hạn đăng ký với WP Event Manager và tiện ích bổ sung WP Event Manager – Registrations của nó, giới hạn đăng ký không được đồng bộ hóa giữa các ngôn ngữ.
Giải pháp tạm thời
Đảm bảo bạn có bản sao lưu toàn bộ trang web trước khi tiếp tục.
- Mở tệp …/wp-content/plugins/wp-event-manager-registrations/wp-event-manager-registrations-functions.php.
- Tìm dòng 497.
- Thay thế:
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 ))); } } - Bằng:
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 ))); } } - Sau đó, tìm dòng 595.
- Thay thế:
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) ) ) ))); } } - Bằng:
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; } }