Démarrer un projet

Multilingual Multisite : compatibilité avec Filter Everything Pro

Avec le plugin Filter Everything Pro, vous obtenez des URL de filtres optimisées pour le SEO.

Exemple :

  • EN: domain.com/en/products/t-shirts/color-blue
  • DE: domain.com/de/produkte/t-shirts/farbe-blau

Ce sont des URL filtrées pour la catégorie t-shirts et leur couleur. Notre plugin peut générer la catégorie, mais l’URL filtrée nécessite quelques remplacements manuels, car il n’existe aucun lien entre les attributs personnalisés (taxonomies).

Depuis la version 1.3.0, ce n’est plus nécessaire ! Si vous avez relié les taxonomies (Réseau > Traductions > Taxonomies) et les termes, l’URL sera correcte.

Dans le code ci-dessous, vous voyez une table de correspondance personnalisée appelée $blogAttrMappingTable. Ajoutez-y vos propres textes par langue :

use FilterEverythingFilterContainer;
use FilterEverythingFilterFilterSet;
use FilterEverythingFilterFilterFields;
use FilterEverythingFilterPostMetaNumEntity; add_filter('wordpress_multilingual_multisite_connected_term_links', function($links, $term_id, $filtered) { global $blogs_data; $currentBlogId = get_current_blog_id(); $currentBlogLanguage = $blogs_data[$currentBlogId]['language']; $blogAttrMappingTable = array( 'en' => array( 'color', 'blue', ), 'de'=> array( 'farbe', 'blau', ), ); if(!isset($blogAttrMappingTable[$currentBlogLanguage])) { return $links; } $wpManager = Container::instance()->getWpManager(); $queriedValues = $wpManager->getQueryVar('queried_values'); if(!empty($queriedValues)) { foreach($links as $blog_id => &$link) { $blogLanguage = $blogs_data[$blog_id]['language']; if(!isset($blogAttrMappingTable[$blogLanguage])) { continue; } foreach($queriedValues as $queriedValue) { if(empty($queriedValue['values'])) { continue; } $queriedValueAttributeName = str_replace($blogAttrMappingTable[$currentBlogLanguage], $blogAttrMappingTable[$blogLanguage], $queriedValue['slug']); $link .= $queriedValueAttributeName . '-'; $first = true; foreach($queriedValue['values'] as $queriedValueValue) { if(count($queriedValue['values']) > 1 && !$first) { $link .= '-or-'; } $queriedValueAttributeValue = str_replace($blogAttrMappingTable[$currentBlogLanguage], $blogAttrMappingTable[$blogLanguage], $queriedValueValue); $link .= $queriedValueAttributeValue; $first = false; } } } } return $links; }, 20, 3);