Búsquedas de documentos en varios idiomas con WPML y Custom Fields Search en WordPress

Si estás trabajando en una web multi-idiomas y quieres subir documentos que tengan campos personalizados, una cosa que vas a querer es un buscador potente que te sirva para hacer las búsquedas en base a esos campos personalizados.

Voy a explicar aquí la forma que yo encontré en base a varios plugins bastante comunes pero que, de inicio, no ofrecen esa opción:

  • WPML (WordPress Multilingual Plugin): es el mejor plugin, sin duda, para lograr que nuestra web esté en varios idiomas. Y sí, es de pago.
  • ACF (Advanced Custom Fields): nos va a permitir crear los campos personalizados para nuestras entradas. Lo mejor que encontré en el plugin es que indicas bajo qué categoría querrás los campos personalizados, y al seleccionar esa categoría te aparecerán los campos automáticamente.
  • CFS (Custom Fields Search): con este plugin podrás crear formularios de búsqueda a través de los campos personalizados creados con ACF.
  • Widget Logic: nos permitirá seleccionar en qué páginas queremos que aparezca nuestro widget, en este caso nuestro buscador creado con CFS por idioma.

El problema encontrado es que CFS crea una búsqueda pero sólo en la base de datos del idioma principal que configuraste en WPML. De esta forma, aunque hayas traducido los campos de búsqueda de ACF y CFS, igualmente, al hacer una búsqueda en otro idioma directamente te buscará sólo en la del primer idioma. Además la extensión «WPML Widget» sólo funciona con los predeterminados, por lo que si queremos hacer un buscador en dos idiomas, tendremos que usar Widget Logic para explicarle al sistema cuándo tiene que mostrarlo.

Es decir

He trabajado en una web que usa dos idiomas: español e inglés. El idioma principal es el español.

  • Cree los campos personalizados de: autor, publicado por, año y palabra clave.
  • Traduje estos campos con WPML al inglés para que pudiesen aparecer en ese idioma.
  • Con CFS cree los widgets (uno para cada idioma) que me permite buscar en los campos personalizados previamente creado.
  • Con Widget Logic le explico al widget que sólo aparezca cuando la web esté en el idioma correcto con el código: ICL_LANGUAGE_CODE == ‘es’ para español, y ICL_LANGUAGE_CODE == ‘en’ para inglés.

Búsqueda diferenciada por idiomas

Aquí está la parte que más dolor de cabeza te va a dar si te pones a buscar en foros. Al parecer no es una opción que esté disponible, o pensada de antemano.

Al hacer la búsqueda en el formulario en inglés, seguía yendo a buscar a «https://url.com/?Search…» cuando lo que necesitaba era «https://url.com/en/?Search…».

Para ello, hay que ir a editar el plugin en las opciones de administración, y buscar el archivo:
wp-custom-fields-search/templates/wp-custom-fields-search-form.php

Una vez en él hay que reemplazar la línea:

  • <form method=’get’ class='<?php echo $formCssClass?>’ action='<?php echo $formAction?>’>

Por:

  • <?php
    if (ICL_LANGUAGE_CODE == ‘en’){ ?>
    <form method=’get’ class='<?php echo $formCssClass?>’ action='<?php echo $formAction?>/en/’>
    <?php } else ?>
    <form method=’get’ class='<?php echo $formCssClass?>’ action='<?php echo $formAction?>’>

Lo que le estaremos diciendo así al buscador es que cuando reconozca que el idioma es inglés entonces que le añada a la búsqueda /en/ al final.


Si, has llegado a esta entrada y aún no logras saber cómo poder hacerlo porque no quedó claro, escribe un comentario aquí abajo para poder intentar colaborarte. Yo no soy programador, de hecho tengo algunos conocimientos muy básicos, pero sí muy curioso como para lograr que finalmente las cosas funcionen como queremos.

Si, por otro lado, has llegado hasta este post y crees que existe una forma mejor de solucionar el problema, por favor, déjalo en comentarios para así poder aprender juntos.

Suscribirte
Notificación de
guest

0 Comments
Inline Feedbacks
View all comments

RELACIONADO

Cómo exportar un pdf en LibreOffice sin las líneas de grilla negra

"Seguramente ese problema ya lo ha tenido alguien antes y lo documentó". Gran frase que cuando toma cuerpo en la representación de poder resolver un problema que te acechaba hace tiempo se convierte en maravilloso maná. Uno de estos problemas venía siendo el poder exportar una hoja de LibreCalc (a.k.a. Excel) a pdf sin las feas líneas negras de la grilla. El el mismísimo foro de LibreOffice ya l…

Aplicar una regla de CSS a dos clases al mismo tiempo

Busco esto a cada rato así que me lo traigo aquí para acordarme y de paso compartirlo. Una forma de tener limpio el CSS y de paso lograr que haga lo que deseamos sin volvernos locos es poder aplicar una misma regla de CSS (o varias) a distintas clases. Lo que pasa es que tiene truqui porque no es sólo colocar una detrás de otra. La sintaxis es como sigue: .border-blue.background { ... …

Mostrar imagen destacada (Featured image) antes del contenido de una entrada (post)

En algunos temas de WordPress no se hace posible ver la imagen destacada en el cuerpo de la entrada, como por ejemplo en este mismo blog. Hace un tiempo cambié esa opción y cree la posibilidad gracias al siguiente post: Add Featured Image Before Content In Any Theme En mi caso sólo hizo falta sumarle este pedazo de código al functions.php dentro del child theme para no generar problemas en caso…