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

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