WPML
상태
해결됨
관련 플러그인/테마
JetEngine
주제 태그
Compatibility

문제 개요

JetEngine 플러그인의 Profile Builder 기능을 사용하는 경우, 보조 언어에서 옵션이 적용되지 않는 문제가 발생합니다.

임시 해결 방법

진행하기 전에 전체 사이트 백업을 완료했는지 확인하세요.

1부


  • …/wp-content/plugins/jet-engine/includes/modules/profile-builder/inc/rewrite.php 파일을 여세요.

  • 57번째 줄을 찾으세요.

  • 변경 전:
    $pages  = Module::instance()->settings->get_pages();

  • 변경 후:
    $pages  = Module::instance()->settings->get_pages();
    
    // WPML Workaround for compsupp-7264 - PART 1
    if ( class_exists('Sitepress') && isset( $pages['account_page'] ) ) {
    	// Get WPML Active Languages
    	$wpml_languages = apply_filters( 'wpml_active_languages', NULL, 'orderby=id&order=desc' );
    
    	// Let's add a new item in $pages array for each language, so it can also create rewrite rules for it
    	foreach( $wpml_languages as $language ) {
    		if ( $language['language_code'] != apply_filters('wpml_default_language', NULL ) ) {
    			$account_page_id = $pages['account_page'];
    			
    			// The new item should have the translated account page ID
    			$translated_account_page_id = apply_filters( 'wpml_object_id', $account_page_id , get_post_type($account_page_id) , TRUE, $language['language_code']  );
    			$pages['account_page_'.$language['language_code']] = $translated_account_page_id;
    		}
    	}
    }

2부


  • …/wp-content/plugins/jet-engine/includes/modules/profile-builder/inc/query.php 파일을 여세요.

  • 53번째 줄을 찾으세요.

  • 변경 전:
    $user    = get_query_var( Module::instance()->rewrite->user_var );

  • 변경 후:
    $user    = get_query_var( Module::instance()->rewrite->user_var );
    
    // WPML Workaround for compsupp-7264 - PART 2
    if ( class_exists('Sitepress') ) {
    	
    	// Let's create a with the query_var of the account page in each language
    	$account_pages = [];
    	$wpml_languages = apply_filters( 'wpml_active_languages', NULL, 'orderby=id&order=desc' );
    	foreach( $wpml_languages as $language ) {
    		if ( $language['language_code'] != apply_filters('wpml_default_language', NULL ) ) {
    			$account_pages[] = 'account_page_'.$language['language_code'];
    		}
    	}
    	// If the current query_var match with our array items, let's "fix" the $page variable so the switch works correctly
    	if ( in_array( $page, $account_pages) ) {
    		$page = 'account_page';
    	}
    }
  • 설정 > 고유주소 페이지로 이동하여 고유주소를 다시 저장하세요.

알려진 모든 문제 →