Filtry atrybutów woocommerce zmiana tekstu

Wczoraj klient złożył ciekawe zapotrzebowanie. Konkretnie „pola wyboru atrybutów podczas filtrowania produktów nie są gramatycznie poprawne”. I rzeczywiście czasami tak bywa, że bezpośrednie tłumaczenie z angielskiego nie zawsze wygląda poważnie. Wszystko jest dobrze gdy mamy any size = dowolny rozmiar, any color = dowolny kolor. Ale u naszego klienta wyglądało to tak: „Dowolny Klasa CE”, „Dowolny ilość strzałów” i nic dziwnego, że sprawiało to ogromny problem estetyczny.

Rozwiązanie tego problemu jest dość proste. Poszukiwany przez nas element skonstruowany jest jako widget „Filtr produktów według atrybutu”. Aby zmienić wartości domyślne w polu select wykorzystałem filtr woocommerce_layered_nav_any_label. Odpowiedzialny jest on za tekst, który pojawia nam się jako pierwszy w liście rozwijanej.

add_filter ('woocommerce_layered_nav_any_label', 'gc_filter_function', 10, 3);  

function gc_filter_function ($sprintf, $taxonomy_label, $taxonomy) { 
   switch ($taxonomy) {   
     case 'pa_klasace': return 'Wybierz klasę CE'; break;   
     case 'pa_strzaly': return 'Wybierz liczbę strzałów'; break;   
     case 'pa_kaliber': return 'Wybierz kaliber'; break; 
     default: return 'Wybierz '.$taxonomy_label; break;   
   } 
}
woocommerce_layered_nav_any_label
Zmodyfikowane filtry atrybutów woocommerce

W kodzie woocommerce wywołanie filtra znajduje się w pliku /includes/widgets/class-wc-widget-layer-nav.php

$any_label = apply_filters ('woocommerce_layered_nav_any_label', 
    sprintf( __( 'Any %s', 'woocommerce' ), $taxonomy_label ), 
$taxonomy_label, $taxonomy ); 
Przewijanie do góry