Descubre con este tutorial cómo mostrar un menú de gestión de idiomas de MultilingualPress en cualquier parte de la web gracias a un shortcode.
Si estás usando MultilingualPress para gestionar varios sitios con distintos idiomas seguramente te interesará mostrar un menú que permita al usuario cambiar de un idioma a otro de forma sencilla.
El plugin ofrece un widget para mostrar el menú pero si necesitas algo más versátil para colocarlo en cualquier sitio de la web, bien sea en el editor o en una plantilla del tema, un shortcode te va dar más juego.
Vamos a ver cómo puedes crearlo.
Pasos para mostrar un menú de idiomas de MultilingualPress mediante un shortcode
1. Añade la función multilingualpress_get_translations
En primer lugar vas agregar la función de MultilingualPress que gestiona los idiomas.
Para ello añade el siguiente snippet al fichero functions.php o a tu plugin de funcionalidades:
// Crear función que gestiona los idiomas
function multilingualpress_get_translations() {
$args = \Inpsyde\MultilingualPress\Framework\Api\TranslationSearchArgs::forContext(new \Inpsyde\MultilingualPress\Framework\WordpressContext())
->forSiteId(get_current_blog_id())
->includeBase();
$translations = \Inpsyde\MultilingualPress\resolve(
\Inpsyde\MultilingualPress\Framework\Api\Translations::class
)->searchTranslations($args);
return $translations;
}
2. Crea el shortcode
A continuación vas a crear el shortcode propiamente. Para ello, añade el siguiente snippet al fichero functions.php o a tu plugin de funcionalidades:
Para ver este código y los otros 2063 snippets de esta web,
identifícate o suscríbete aquí.
Con este código creas un shortcode que te permite mostrar un menú con los idiomas configurados con MultilingualPress al escribir [lang_switcher].
En este caso, hay 3 idiomas y el menú mostraría, por defecto, los nombres iso, en este caso serían:
- English
- Spanish
- Catalan
Pero gracias a unos condicionales los transformas en algo más usable:
- ENG
- ES
- CAT
Obviamente puedes modificarlo para que muestre los idiomas como mejor se ajuste a tu caso.
De hecho, si prefieres que se utilicen los nombres iso, puede eliminar esta parte del snippet:
if ($url) {
if ( $iso_name == 'English' ) {
$items .= "<li><a href='${url}'>ENG</a></li>";
}
if ( $iso_name == 'Spanish' ) {
$items .= "<li><a href='${url}'>ES</a></li>";
}
if ( $iso_name == 'Catalan' ) {
$items .= "<li><a href='${url}'>CAT</a></li>";
}
}
Una vez que ya lo has personalizado a tu gusto, solo te queda un paso.
3. Introduce el shortcode donde desees
La ventaja de los shortcodes es que puedes insertarlos en cualquier punto de la web.
Solo tendrás que escribir «[tu_shortcode]» donde quieras que se visualice, en este caso [lang_switcher].
Importante:
- Si estás utilizando el editor clásico, utiliza la pestaña de HTML para introducir el shortcode.
- En caso de que ya estés usando el editor de bloques de WordPress puedes añadirlo al bloque normal de párrafo, el de HTML o el de shortcode. Todos ellos renderizarán de forma correcta el contenido.
Si quieres introducirlo en un fichero o plantilla de WordPress puedes hacerlo usando la función apply_shortcodes
. En este caso sería algo así:
echo = apply_shortcodes ('[lang_switcher]');
Conclusiones
Ya ves qué fácil es mostrar un menú de idiomas de MultilingualPress en cualquier punto de las web gracias a este shortcode personalizado.
Si tienes alguna duda te leo en los comentarios. Y si quieres dejarme una sugerencia para futuros tutoriales, envíamela a través del formulario de contacto.
Todo ventajas de ser suscriptor. 😉