Iniciar un proyecto

Multilingual Multisite: compatibilidad con Filter Everything Pro

Con el plugin Filter Everything Pro obtiene URL de filtros optimizadas para el SEO.

Ejemplo:

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

Son URL filtradas para la categoría camisetas y su color. Nuestro plugin puede generar la categoría, pero la URL filtrada necesita algunos reemplazos manuales, porque no hay conexión entre los atributos personalizados (taxonomías).

¡Desde la versión 1.3.0 ya no es necesario! Si ha vinculado las taxonomías (Red > Traducciones > Taxonomías) y los términos, la URL será correcta.

En el código de abajo verá una tabla de correspondencias propia llamada $blogAttrMappingTable. Añada en ella sus textos por idioma:

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);