WPML

Resumen del problema

Si está utilizando la función Profile Builder del plugin JetEngine, notará que las opciones no se están aplicando en el idioma secundario.

Solución alternativa

Este problema está solucionado. Actualizar a la última versión lo soluciona en su sitio, por lo que solo necesita esta solución alternativa si aún no puede actualizar.

Por favor, asegúrese de tener una copia de seguridad completa de su sitio antes de continuar.

Parte 1

  • Abra el archivo …/wp-content/plugins/jet-engine/includes/modules/profile-builder/inc/rewrite.php.
  • Busque la línea 57.
  • Reemplace:
    $pages  = Module::instance()->settings->get_pages();
  • Por:
    $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

  • Abra el archivo …/wp-content/plugins/jet-engine/includes/modules/profile-builder/inc/query.php.
  • Busque la línea 53.
  • Reemplace:
    $user    = get_query_var( Module::instance()->rewrite->user_var );
  • Por:
    $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';
    	}
    }
  • Vaya a la página ConfiguraciónEnlaces permanentes y vuelva a guardar los enlaces permanentes

Todos los problemas conocidos

¿Sigue teniendo este problema?

Si actualizar no lo soluciona, haga una consulta de soporte y lo revisaremos con usted.