WPML
상태
개발자가 해결함
관련 플러그인/테마
WP Event Manager
주제 태그
Compatibility

문제 개요

WP Event Manager 및 WPML로 생성된 이벤트를 번역할 때 OrganizerVenue 필드가 프런트엔드에서 항상 기본 언어로 표시되지는 않습니다.

임시 해결 방법

진행하기 전에 반드시 사이트를 전체 백업하세요.

다음 변경 사항을 적용해야 합니다.


  1. WPML설정사용자 정의 필드 번역으로 이동하세요.

  2. _event_organizer_ids_event_venue_ids 사용자 정의 필드를 복사로 설정하세요.

  3. 그런 다음 /wp-content/plugins/wp-event-manager/wp-event-manager-template.php 파일을 여세요.

  4. 1229번째 줄을 찾으세요.

  5. 다음을:
    foreach ($post->_event_organizer_ids as $key => $organizer_id) {

    다음으로 변경하세요:

    foreach ($post->_event_organizer_ids as $key => $organizer_id) {
    
    	// WPML Workaround for compsupp-6662
    	if (class_exists('SitePress')) {
    		$organizer_id = apply_filters( 'wpml_object_id', $organizer_id, 'event_organizer', TRUE  );
    	}


  6. 다음으로 /wp-content/plugins/wp-event-manager/wp-event-manager-functions.php 파일을 여세요.

  7. 1903번째 줄을 찾으세요.

  8. 다음을:
    function get_event_organizer_ids( $post = null ) {
    	$post = get_post( $post );
    
    	if ( $post->post_type !== 'event_listing' )
    		return;
    
    	return !empty($post->_event_organizer_ids) ? $post->_event_organizer_ids : '';
    }

    다음으로 변경하세요:

    function get_event_organizer_ids( $post = null ) {
    	$post = get_post( $post );
    
    	if ( $post->post_type !== 'event_listing' ) {
    		return;
    	}
    
    	// WPML Workaround for compsupp-6662
    	if ( class_exists('SitePress') && !empty($post->_event_organizer_ids) ) {
    		foreach ($post->_event_organizer_ids as $key => $organizer_id ) {
    			$result = $post->_event_organizer_ids;
    			$result[$key] = apply_filters( 'wpml_object_id', $organizer_id, 'event_organizer', TRUE  );
    		}
    
    		return $result;
    	}	
    
    	return !empty($post->_event_organizer_ids) ? $post->_event_organizer_ids : '';
    }

  9. 마지막으로 같은 파일에서 1985번째 줄을 찾으세요.

  10. 다음을:
    function get_event_venue_ids( $post = null ) {
    	$post = get_post( $post );
    
    	if ( $post->post_type !== 'event_listing' )
    		return;
    
    	return !empty($post->_event_venue_ids) ? $post->_event_venue_ids : '';
    }

    다음으로 변경하세요:

    function get_event_venue_ids( $post = null ) {
    	$post = get_post( $post );
    
    	if ( $post->post_type !== 'event_listing' )
    		return;
    
    	// WPML Workaround for compsupp-6662
    	if ( class_exists('SitePress') && !empty($post->_event_venue_ids) ) {
    		$result = apply_filters( 'wpml_object_id', $post->_event_venue_ids , 'event_listing', TRUE  );
    		return $result;
    	}	
    
    	return !empty($post->_event_venue_ids) ? $post->_event_venue_ids : '';
    }

알려진 모든 문제 →