WPML

ภาพรวมของปัญหา

หากคุณกำลังใช้ฟีเจอร์ Profile Builder จากปลั๊กอิน JetEngine คุณจะพบว่าตัวเลือกไม่ถูกนำไปใช้ในภาษารอง

วิธีแก้ปัญหาชั่วคราว

ปัญหานี้ได้รับการแก้ไขแล้ว การอัปเดตเป็นเวอร์ชันล่าสุดจะแก้ปัญหานี้บนไซต์ของคุณ ดังนั้นคุณจึงต้องใช้วิธีแก้ปัญหาชั่วคราวนี้เฉพาะในกรณีที่คุณยังไม่สามารถอัปเดตได้

โปรดตรวจสอบให้แน่ใจว่าคุณได้สำรองข้อมูลไซต์ทั้งหมดก่อนดำเนินการต่อ

ส่วนที่ 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';
    	}
    }
  • ไปที่หน้า การตั้งค่าลิงก์ถาวร และบันทึกลิงก์ถาวรอีกครั้ง

ปัญหาที่ทราบแล้วทั้งหมด

ยังคงพบปัญหานี้อยู่หรือไม่

หากการอัปเดตไม่สามารถแก้ไขปัญหานี้ได้ ส่งคำถามถึงฝ่ายสนับสนุน และเราจะตรวจสอบร่วมกับคุณ