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.
Tengo un enlace útil para ti, por favor revisalo primero:
http://wpml.org/forums/topic/hide-language-vs-display-hidden-languages-in-your-profile-not-working/
http://wpml.org/forums/topic/hide-one-language/
http://wpml.org/forums/topic/hiding-active-language-in-menu/
http://wpml.org/forums/topic/language-selector-how-to-hide-one-language/
Gracias
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.