WPML
Stato
Risolto
Plugin/tema correlato
JetEngine
Tag dell’argomento
Compatibility

Panoramica del problema

Se utilizzi la funzionalità Profile Builder del plugin JetEngine, noterai che le opzioni non vengono applicate nella lingua secondaria.

Soluzione alternativa

Assicurati di avere un backup completo del sito prima di procedere.

Parte 1


  • Apri il file …/wp-content/plugins/jet-engine/includes/modules/profile-builder/inc/rewrite.php.

  • Cerca la riga 57.

  • Sostituisci:
    $pages  = Module::instance()->settings->get_pages();

  • Con:
    $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;
    		}
    	}
    }

Parte 2


  • Apri il file …/wp-content/plugins/jet-engine/includes/modules/profile-builder/inc/query.php.

  • Cerca la riga 53.

  • Sostituisci:
    $user    = get_query_var( Module::instance()->rewrite->user_var );

  • Con:
    $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';
    	}
    }
  • Vai alla pagina Impostazioni > Permalink e salva nuovamente i permalink

Tutti i problemi noti →