Documentación > Desarrolladores > Implementación de una solución de búsqueda personalizada

Implementación de una solución de búsqueda personalizada

Explorar Documentos
Buscar Documentación

Si buscas una solución de búsqueda para tu contenido, debes saber que cualquier plugin que haga FILTRADO basado en taxonomía o campos personalizados funcionará.

Puedes usar WP_Query con el parámetro query[‘s’] y funcionará directamente para proporcionar publicaciones relevantes para ese término clave. El término clave debe estar en el mismo idioma que el idioma actual que se muestra al cargar esa página. En el código, las publicaciones devueltas estarán en el idioma predeterminado (IDs, título de la publicación, contenido de la publicación, etc.), pero el contenido mostrado se traduce en un hook posterior, por lo que se mostrará en el idioma traducido en el frontend.

Solo el título de la publicación y el contenido de la publicación son buscables en idiomas traducidos, los campos personalizados externos como ACF no lo son. Dependiendo de tu configuración, si puedes incluir el contenido de campos personalizados dentro del hook the_content, entonces los campos personalizados también son buscables.

Para que la búsqueda funcione en una publicación específica en un idioma específico, la traducción del contenido y el título de esa publicación en ese mismo idioma debe existir antes de la búsqueda. Si la traducción automática está activa, una publicación debe visitarse al menos una vez en ese idioma específico para poder ser indexada por TP.
Sin embargo, cualquier plugin que utilice un índice no funcionará correctamente con nuestro plugin.

Si quieres que TranslatePress sea compatible con una función de búsqueda personalizada que no funciona de forma predeterminada, aquí tienes algunos aspectos que debes tener en cuenta.

TranslatePress vincula una función al filtro ‘pre_get_posts’ con el fin de adaptar la consulta para la función de búsqueda en un idioma traducido.

Si la consulta[‘s’] está establecida y la página vista actualmente está en un idioma traducido, entonces TP realiza una búsqueda y devuelve los ID de las publicaciones en el idioma predeterminado donde ese término clave se encuentra en las publicaciones traducidas equivalentes.

Existe un filtro que puedes usar para aplicar este hook independientemente del estado de:

!is_admin() && $query->is_main_query() && $query->is_search()

El código TranslatePress tiene este aspecto:

if ( ( !is_admin() && $query->is_main_query() && $query->is_search() ) || apply_filters( 'trp_force_search', false ) ) 

Así puedes conectarte a ‘trp_force_search’ para habilitar la búsqueda en diferentes condiciones. Para habilitar la búsqueda todo el tiempo usa el código:

add_filter('trp_force_search', '__return_true'); 

Aquí tienes un ejemplo de cómo crear compatibilidad con una funcionalidad de búsqueda que no utiliza el sistema de búsqueda predeterminado de WordPress a través de WP_Query. En el siguiente código, la función devuelve los IDs de las publicaciones para una clave de búsqueda particular en un idioma traducido.

add_filter( 'aws_search_results_products_ids', 'trp_aws_search_results_products_ids', 10, 2 );

function trp_aws_search_results_products_ids(  $posts_ids, $s ){

global $TRP_LANGUAGE;

$trp = TRP_Translate_Press::get_trp_instance();

$trp_settings = $trp->get_component( 'settings' );

$settings = $trp_settings->get_settings();

if ( $TRP_LANGUAGE !== $settings['default-language'] ) {
$trp_search = $trp->get_component( 'search' );
$search_result_ids = $trp_search->get_post_ids_containing_search_term($s, null);

if (!empty ( $search_result_ids) ) {
return $search_result_ids;
}
}

return $posts_ids;
}

Depurar búsqueda en idiomas secundarios

En ocasiones, es posible que no aparezca ningún resultado de búsqueda para una consulta concreta en un idioma secundario. Cuando esto ocurre, no queda claro si TranslatePress ha podido indexar esa entrada o página en concreto (por diversas razones, como el uso de creadores de páginas que no cuentan con un bucle de consulta clásico) o si hay algún otro motivo que esté provocando el error.

Para ver si una ID de publicación en particular tiene cadenas indexadas para un idioma específico, puedes instalar este pequeño plugin.

Luego visita WordPress Admin -> Herramientas -> TRP Search Debug

Características

  • buscar ID de publicación o página y ver las cadenas basándose en las cuales podría aparecer en la búsqueda
  • elimina los datos transitorios TranslatePress relacionados con la búsqueda para que no se muestre la información almacenada en la caché

TranslatePress Multilingüe

El mejor servicio de localización de sitios web para sitios de WordPress. Gestiona todo desde una interfaz visual.