Ondersteuning van Multilingual Multisite voor Filter Everything Pro
Met de plugin Filter Everything Pro krijg je SEO-geoptimaliseerde gefilterde URL’s.
Voorbeeld:
- EN: domain.com/en/products/t-shirts/color-blue
- DE: domain.com/de/produkte/t-shirts/farbe-blau
Dit zijn gefilterde URL’s voor de categorie T-shirts en hun kleur. Onze plugin kan de categorie genereren, maar de gefilterde URL vraagt wat handmatige vervangingen, omdat er geen koppeling is tussen eigen attributen (taxonomieën).
Vanaf versie 1.3.0 is dit niet meer nodig! Heb je taxonomieën (netwerk > vertalingen > taxonomieën) en termattributen gekoppeld, dan is de URL correct.
In de code hieronder zie je een eigen koppeltabel $blogAttrMappingTable. Gebruik die om je eigen strings per taal toe te voegen:
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);