WPML
Statut
Résolu
Extension/thème associé
JetEngine
Étiquettes de sujet
Compatibility

Aperçu de l’anomalie

Si vous utilisez la fonctionnalité Profile Builder de l’extension JetEngine, vous constaterez que les options ne sont pas appliquées dans la langue secondaire.

Solution de contournement

Veuillez vous assurer de disposer d’une sauvegarde complète de votre site avant de continuer.

Partie 1


  • Ouvrez le fichier …/wp-content/plugins/jet-engine/includes/modules/profile-builder/inc/rewrite.php.

  • Cherchez la ligne 57.

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

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

Partie 2


  • Ouvrez le fichier …/wp-content/plugins/jet-engine/includes/modules/profile-builder/inc/query.php.

  • Cherchez la ligne 53.

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

  • Par :
    $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';
    	}
    }
  • Allez sur la page Paramètres > Permaliens et enregistrez à nouveau les permaliens

Toutes les anomalies connues →