Multilingual Multisite: Unterstützung für Filter Everything Pro
Mit dem Plugin Filter Everything Pro erhalten Sie SEO-optimierte URLs für Filter.
Beispiel:
- EN: domain.com/en/products/t-shirts/color-blue
- DE: domain.com/de/produkte/t-shirts/farbe-blau
Das sind gefilterte URLs für die Kategorie T-Shirts und deren Farbe. Unser Plugin kann die Kategorie erzeugen, die gefilterte URL braucht aber einige manuelle Ersetzungen, da es keine Verbindung zwischen eigenen Eigenschaften (Taxonomien) gibt.
Seit Version 1.3.0 ist das nicht mehr nötig! Wenn Sie Taxonomien (Netzwerk > Übersetzungen > Taxonomien) und Begriffe verknüpft haben, ist die URL korrekt.
Im folgenden Code sehen Sie eine eigene Zuordnungstabelle namens $blogAttrMappingTable. Tragen Sie dort Ihre eigenen Texte pro Sprache ein:
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);