Pobieranie produktu WooCommerce na bazie jego SKU z uwzględnieniem wielojęzyczności (WPML)

Dzisiaj krótki kawałek kodu, który może się przydać osobom posiadającym wielojęzyczne sklepy oparte na WooCommerce i WPML.

Otóż typowy kod zwracający produkt z WooCommerce na bazie jego SKU wygląda następująco:

function get_product_by_sku( $sku ) {
    global $wpdb;
    $product_id = $wpdb->get_var($wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku));
    if ($product_id) {
        return new WC_Product($product_id);
    }
    return null;
}

Niestety nie uwzględnia on faktu iż WPML dla każdego produktu tworzy oddzielny rekord w tabeli postów, zatem otrzymamy produkty w jednym języku. Na szczęście możemy to naprawić i to w relatywnie prosty sposób, bo wystarczy zmodyfikować zapytanie:

function get_product_by_sku($sku) {
    global $wpdb;

    $product_id = $wpdb->get_var($wpdb->prepare("SELECT pm.post_id FROM ".$wpdb->postmeta." AS pm LEFT JOIN ".$wpdb->prefix."icl_translations AS tr ON pm.post_id = tr.element_id WHERE pm.meta_key='_sku' AND pm.meta_value='%s' AND tr.language_code = '".ICL_LANGUAGE_CODE."'", $sku));

    if($product_id) {
        return new WC_Product($product_id);
    }
    return null;
}

Powyższy kod działa podobnie do poprzedniego tylko podczas zapytania pobierane są dane z tabeli icl_translations, które pozwalają określić język wpisów powiązanych ze zwracanymi ID. Oczywiście najważniejszy jest ostatni warunek, który wybiera tylko ten rekord, który powiązany jest z obecnie wykorzystywanym językiem na stronie.

Garść statystyk, nowy Jetpack, wielojęzyczność w WordPress 4.0 oraz WordUp we Wrocławiu – WordPressowe Linki #27

Statystyki WordPressa dla 500 000 najpopularniejszych witryn internetowych świata

Dzięki powyższym statystykom możemy poznać najpopularniejsze wtyczki, motywy, hostingi oraz wersje WordPressa dla stron opartych na WordPressie, które znajdują się w grupie 500 tysięcy najpopularniejszych stron internetowych. Co warte uwagi – co piąta z tych stron bazuje na WordPressie.

Jetpack 3.0

Jetpack w wersji 3.0 doczekał się sporych zmian w swoim interfejsie dla kokpitu. Dzięki tym zmianom obsługa Jetpacka powinna być teraz dużo bardziej wygodna i intuicyjna.

Plany odnośnie wielojęzyczności w WordPress 4.0

Wygląda na to, że WordPress w wersji 4.0 wniesie dużo istotnych zmian związanych z obsługą wielojęzyczności. Instalator będzie zawierał wybór języka, a sama zmiana języka będzie dużo prostsza z poziomu kokpitu. Pojawić się też ma możliwość wyszukiwania wtyczek posiadających tłumaczenia w danym języku.

WordUp uczy, inspiruje i… wyciąga z depresji

Relacja Agnieszki Bury z zeszłotygodniowego WordUpa we Wrocławiu. Jak zawsze było to bardzo udane i owocne spotkanie, które utwierdziło mnie w przekonaniu, że warto jeździć do Wrocławia na spotkania miłośników WordPressa.

Wtyczka do zarządzania danymi korzystającymi z Transient API

Jeżeli przeraża Was operowanie bezpośrednio na bazie danych z użyciem np. phpMyAdmin a funkcjonalność strony options.php w kokpicie jest niewystarczająca to ta wtyczka jest właśnie dla Was 😉

Ankiety dotyczące WordCampów

Pojawiła się ciekawa inicjatywa aby stworzyć jedną wspólną ankietę dotyczącą WordCampów, która mogłaby pomóc organizatorom tych wydarzeń zebrać odpowiednią ilość informacji zwrotnej od uczestników. Jak widać nie tylko organizatorzy naszych WordUpów zauważyli, że informacje zwrotne od uczestników wszelkiego rodzaju wydarzeń WordPressowych są bardzo istotne dla dalszego rozwoju społeczności WordPressa.

Android Gingerbread nie będzie już wspierany przez oficjalną aplikację WordPress

Ciągle dość popularny Android w wersji 2.3.* doczekał się sytuacji godnej starych wersji Internet Explorera 😉