WPML
Status
Resolvido pelo autor
Relatado para
WPML Multilingual for BuddyPress and BuddyBoss 1.7.0
Plugin/tema relacionado
BuddyBoss Platform
Tags de tópico
Compatibility

Visão geral do problema

Há uma inconsistência na ordenação alfabética dos campos de taxonomia traduzidos nas páginas de perfil do BuddyBoss. Enquanto os campos do idioma padrão são ordenados corretamente, os campos traduzidos não mantêm essa ordem.

Solução alternativa

Por favor, certifique-se de ter um backup completo do seu site antes de prosseguir.


  • Abra o arquivo …/wp-content/plugins/buddyboss-platform/bp-xprofile/classes/class-bp-xprofile-field-type-selectbox.php.

  • Dentro de BP_XProfile_Field_Type_Selectbox::edit_field_options_html(), substitua a seguinte linha:
    echo $html;

  • Por:
    // WPML Workaround for compsupp-7514
    if ( class_exists('Sitepress') && apply_filters('wpml_default_language', NULL ) != apply_filters( 'wpml_current_language', NULL ) ) {
    	// Match all options
    	preg_match_all('/<option(.*?)>(.*?)<\/option>/s', $html, $matches, PREG_SET_ORDER);
    
    	// Extract the options into an array
    	$optionsArray = [];
    	foreach ($matches as $match) {
    		$optionsArray[] = [
    			'full' => $match[0],
    			'attributes' => $match[1],
    			'text' => $match[2],
    		];
    	}
    
    	// Sort the array by the 'text' element
    	usort($optionsArray, function($a, $b) {
    		return strcmp($a['text'], $b['text']);
    	});
    
    	// Rebuild the HTML string
    	$sortedHtml = '';
    	foreach ($optionsArray as $option) {
    		$sortedHtml .= sprintf('<option%s>%s</option>', $option['attributes'], $option['text']);
    	}
    
    	$html = $sortedHtml;
    }
    
    echo $html;

Todos os problemas conhecidos →