WPML
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;
        }
    
    }

Tất cả các lỗi đã ghi nhận →