Supporto di Multilingual Multisite per Filter Everything Pro
Con il plugin Filter Everything Pro ottieni URL filtrati ottimizzati per la SEO.
Esempio:
- EN: domain.com/en/products/t-shirts/color-blue
- DE: domain.com/de/produkte/t-shirts/farbe-blau
Questi sono URL filtrati per la categoria t-shirt e il colore. Il nostro plugin può generare la categoria, ma l’URL filtrato richiede alcune sostituzioni manuali, perché non c’è un collegamento tra gli attributi personalizzati (tassonomie).
Dalla versione 1.3.0 non è più necessario! Se hai collegato le tassonomie (rete > traduzioni > tassonomie) e gli attributi dei termini, l’URL sarà corretto.
Nel codice qui sotto vedi una tabella di corrispondenza personalizzata chiamata $blogAttrMappingTable. Usala per aggiungere le tue stringhe per lingua:
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);