Te muestro a continuación un código para insertar en el functions.php que servirá para poder utilizar un shortcode de WPML de WordPress en cualquier lugar de tu web.
Muy útil para insertar un shortcode en el Theme Options de una plantilla.
Pronto crearemos un plugin que servirá para esta funcionalidad de momento ahi tenéis el código. A disfrutarlo!!
// wpml shortcodes --------------------
add_shortcode( 'wpml_language', 'wpml_find_language');
/* ---------------------------------------------------------------------------
* Shortcode [wpml_language language="en"] [/wpml_language]
* --------------------------------------------------------------------------- */
function wpml_find_language( $attr, $content = null ){
extract(shortcode_atts(array(
'language' => '',
), $attr));
$current_language = ICL_LANGUAGE_CODE;
if($current_language == $language){
$output = do_shortcode($content);
}else{
$output = "";
}
return $output;
}
Cómo véis el shortcode lo llamaremos así:
[wpml_language language="en"] el contenido del idioma en inglés[/wpml_language]
[wpml_language language="es"] el contenido del idioma en español[/wpml_language]
etc.
En el caso que aún así no os muestre bien el shortcode, caso de algunos Theme Options, deberéis buscar el campo que necesitáis mostrar el shortcode y llamarlo de la siguiente manera:
Función a utilizar do_shortcode()
Ejemplo: $sectionid = do_shortcode($section['id']);
Nice done; now you can also use the WordPress’ plugin: WPML Translate Shortcode.
http://wordpress.org/plugins/wpml-translate-shortcode/
Hola, gracias por tu aporte, pero estoy intentando hacer esto en mi web, y no hay manera. El theme options viene en un solo idioma, aunque con WMPL he intentado traducirlo, no funciona como debería y no puedo escribir contenido para un idioma en las opciones del tema, y luego contenido para otro. Muestra el mismo contenido en todos los idiomas.
Añadi las líneas a functions.php el que se encuentra dentro del tema pero aún así cuando pongo los shortcodes en el contenido del theme options, lo q ocurre es que veo el shortcode en la página web, no lo llega a ejecutar. No entendí la ultima parte. Sé que el ID es home-content me parece, pero no estoy segura, la verdad es que no sé como arreglarlo.
Podrías orientarme un poco?
Gracias.
Hola Cristina,
como bien dices te falta comprender la última parte del código.
$sectionid = do_shortcode($section[‘id’]);
Deberías buscar en tu plantilla el campo que se muestra como texto en lugar de representarte el shortcode y hacer lo siguiente:
QUITAR:
echo $mi_campo;
«el cual muestra el texto con el shortcode y por lo tanto es incorrecto»
PONERLO ASI:
echo do_shortcode($mi_campo);
Si tocas un poco no deberías tener problema.
Si sigues con problemas engancha el código en el que llamas al campo que se muestra mal y lo miramos.
Un saludo.
Hola Enric,
Me ha surgido una duda comprando un Tema + plugin de reserva online para un alquiler de coches. Resulta que dentro del tema me viene ya de serie que puedo hacer esto:
Note: you can now use language tags for all page short codes, e.g. [carrental_cars lng=»en»] or [carrental_cars lng=»gr»], etc. -> when you visit a page with that shortcode, the language page will automatically switch.
La cosa es que no en la URL no sale /en, solo una url con la ultima categoria en ingles. P.ej: Yo tengo en español rentacar.com/coches y al añadir el shortcode se pasa a rentacar.com/cars. Habría algun problema con el SEO con esta estructura? No habría que poner /en/cars? O no es tan relevante?
Espero tu respuesta,
Unsaludo,
Alex
Hola Enric,
Soy un firme defensor de WordPress casi desde sus inicios y creo que WPML fue maravilloso cuando era un plugin gratuito y sacó sacar partido del plugin al pasarlo a Premium ;))
Con el tiempo, parece que WordPress ha dejado de lado la opción de crear páginas web con diferentes idiomas sin coste adicional (gratis)
¿Sabes si algún día tendrá integrado en el código fuente de WordPress la posibilidad de traducir la Página Web a varios idiomas como ya hacen otros CMS?
Gracias por adelantado.
Un cordial Saludo desde Barcelona!!!