php wordpress wpml

php - Ocultar el lenguaje WPML



wordpress (3)

Puede consultar el plugin WPML Flag en el menú .

Puede usar la función plugin_wpml_flag_in_menu() del complemento ( vea el código fuente aquí ) y reemplace:

// Exclude current viewing language if( $l[''language_code''] != ICL_LANGUAGE_CODE ) { // ... }

con

// Include only the current language if( $l[''language_code''] == ICL_LANGUAGE_CODE ) { // ... }

para mostrar solo el idioma / bandera actual, si lo entiendo correctamente.

ps: si necesita más ayuda, podría, por ejemplo, mostrarnos el resultado de esta función de depuración para el idioma activo:

function debug_icl_active_language() { $languages = icl_get_languages( ''skip_missing=0'' ); foreach( (array) $languages as $l ) { if( $l[''active''] ) { printf( ''<pre> Total languages: %d - Active: %s </pre>'', count( $languages ), print_r( $l, TRUE ) ); } } }

Estoy usando el lenguaje WPML y no puedo encontrar una solución para lo siguiente:

En el selector de idioma quiero ocultar el idioma, digamos por ejemplo - "él", si el idioma actual es, por ejemplo, "ar", así que cuando en el sitio árabe no veamos en el selector el hebreo, y lo mismo si estamos en hebreo, el árabe no se mostrará.

En palabras abreviadas: lo que quiero es - si en un sitio árabe - la bandera hebrea estará oculta.

Lo que intenté:

function language_selector_flags(){ $languages = icl_get_languages(''skip_missing=0''); if(!empty($languages)){ if(ICL_LANGUAGE_CODE==''en'') { $order = array(''ar''); //Specify your sort order here } elseif(ICL_LANGUAGE_CODE==''he'') { $order = array(''en'', ''ar''); //Specify your sort order here } foreach ($order as $l) { if (isset($languages[$l])) { $l = $languages[$l]; //grab this language from the unsorted array that is returned by icl_get_languages() //Display whatever way you want -- I''m just displaying flags in anchors (CSS: a {float:left; display:block;width:18px;height:12px;margin:0 2px;overflow:hidden;line-height:100px;}) if($l[''active'']) { $class = "active"; $url=""; } else { $class = ''''; $url = ''href="''.$l[''url''].''"''; } echo ''<a ''.$url.'' style="background:url(''.$l[''country_flag_url''].'') no-repeat;" class="flag ''.$class.''">''; echo $l[''language_code''].''''; } } } }

No afecta en absoluto al selector.



function language_selector_flags(){ $languages = icl_get_languages(''skip_missing=0''); if(!empty($languages)){ $filter = array(); $filter[''ar''] = array( ''he'' ); // set your other filters here $active_language = null; foreach ($languages as $l) if($l[''active'']) { $active_language = $l[''language_code'']; break; } $filter = $active_language && isset( $filter[$active_language] ) ? $filter[$active_language] : array(); foreach ($languages as $l) { //Display whatever way you want -- I''m just displaying flags in anchors (CSS: a {float:left; display:block;width:18px;height:12px;margin:0 2px;overflow:hidden;line-height:100px;}) if( in_array( $l[''language_code''], $filter) ) continue; if($l[''active'']) { $class = "active"; $url=""; } else { $class = ''''; $url = ''href="''.$l[''url''].''"''; } echo ''<a ''.$url.'' class="flag ''.$class.''"><img src="'', $l[''country_flag_url''], ''" alt="'', esc_attr( $l[''language_code''] ), ''" /></a>''; } } }

EDITAR: Si hago esto bien, su cliente (supongo) no quiere que sus clientes (especialmente los israelíes) sepan que él ofrece el servicio también a los clientes que hablan árabe. Si es así, puede analizar el encabezado Accept-Language y filtrar el selector de idioma según el resultado.