>
$
#
/
[
*
!
{

NOUS LES DEVS

Relevanssi

Recherche de post avec et sans langue définie

Niveau : intermédiaire
</> </> </>

Une recherche en Wordpress

Il y a quelques jours, j’ai implémenté une recherche sur un WordPress from scratch, sur le moment j’ai estimé que ça ne valait la peine de mettre un plugin super méga lourd juste pour faire un %machintruc% en DB.

Mais pas que

Mais le truc, c’est que j’avais besoin d’aller plus loin en recherchant dans des langues spécifiques et des champs ACF, j’ai donc décidé d’installer Relevanssi.

Je tire la langue

Après quelques tests, je suis plutôt satisfait du plugin. Simple à configurer, la recherche par ACF fonctionne, par langue aussi, en somme le plugin fait le boulot quoi.

Petit HIC ! Le plugin est incapable de rechercher dans des contenus non traduisibles.

Les options du plugin permettent de rechercher soit dans toutes les langues (donc pas de distinction de langue), soit dans la langue courante, il n’y a pas d’entre-deux.

Filtre Relevanssi

Donc mon idée, c’est de repartir de la base. C’est-à-dire de faire une recherche par langue et d’utiliser un filtre de Relevanssi afin de modifier la requête en lui disant que je veux aussi rechercher dans les contenus qui n’ont pas de langue.

Voilà un peu à quoi ça ressemble :

function filter_search($query) {

	$tax = $query->get("tax_query");
	$tax["relation"] = "OR";
	$tax[] = array(
		'taxonomy' => 'language',
		'operator'=> 'NOT EXISTS'
	);

	return $query;
	
}
add_filter( 'relevanssi_modify_wp_query', 'filter_search');

Est-ce que ça marche ?

Alors oui et non…

Relevanssi a dû faire une modification pour faire en sorte que ça fonctionne, donc si tu utilises la version Premium 2.3.0 ou la Free 4.2.0 ou moins, ça ne marchera pas !

Pour faire tourner le petit bout de code ci-dessus, voici la modification à faire dans le fichier lib/search-tax-query.php, la source est le dépôt Github d’un développeur de chez Relevanssi (Mikko Saari).

Je mettrai à jour cet article si je vois que le plugin a intégré la modification.

Un support en béton

Au passage, j’aimerais souligner la qualité du support technique (premium) de Relevanssi qui est vraiment exceptionnelle. Et la patience de Mikko pour avoir pris le temps d’analyser ma demande et de m’aider à venir à bout de ce problème.

21/07/2019

Yann Vangampelaere - nouslesdevs -

NOUS LES DEVS

Vous aimez ce que je fais ? Vous voulez que j'en fasse plus ? dans le développement du blog.