Wakacyjny update

Pomimo tego, że ostatnio mniej tu piszę, moje zaangażowanie w tematach WordPressowych wcale nie zmalało. Niedawno ruszył serwis WooCommerce.pl dla którego planuję przygotować sporo artykułów skierowanych do developerów – wszystkie moje wpisy znajdziecie na stronie z moimi wpisami.

Dodatkowo kolejny polski WordCamp zbliża się wielkimi krokami – w tym roku pojawiło się naprawdę dużo zgłoszeń i było w czym wybierać – szczegóły agendy poznacie niebawem 🙂

Darmowy motyw GK Portfolio, który współtworzę dostał znów solidną porcję aktualizacji – ostatnio na oficjalnym repozytorium wydano wersję 1.5.2.

Moje zestawienie linków związanych z web developmentem doczekało się już 14. wydania.

Tymczasem w przygotowaniu jest spory research, który pewnie jeszcze trochę czasu mi zajmie, ale na pewno warto na niego poczekać. No i przygotowuje się motyw SPA, który chcę pokazać na WordCampie 🙂

A w temacie w miarę świeżych newsów – cieszy mnie strasznie wybór Wiednia na organizatora kolejnego WordCamp Europe – byłem w Wiedniu ostatnio i już wiem, że na pewno tam wrócę, a przy okazji zaliczę swój pierwszy WCEU – nawet jeżeli i tym razem organizatorzy mnie zirytują 😉

WooCommerce a zmiany przepisów dot. podatku VAT

Handling EU VAT on WPJobManager.com with WooCommerce

Jak pewnie wiecie od nowego roku zmieniają się przepisy dotyczące podatku VAT. Powyższy wpis opisuje przykład dostosowania się pod nadchodzące zmiany na przykładzie strony używającej WooCommerce oraz udostępnia kilka ciekawych rozwiązań (w tym proste API do pobierania stawek podatku VAT w krajach UE).

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.

WordPressowe Linki #16

Lista propozycji zmian dla procesu weryfikacyjnego motywów

Powyższa lista zawiera propozycje zmian wymaganych i rekomendowanych wytycznych dla motywów publikowanych na oficjalnym repozytorium po wydaniu WordPressa 3.9.

Jak naprawić błędy w WooCommerce 2.1

Powyższy wpis opisuje rozwiązania najczęściej spotykanych błędów, które mogły się pojawić po aktualizacji WooCommerce do wersji 2.1, która została wydana w poniedziałek. Niedawno pojawiły się też wersje 2.1.1 i 2.1.2, które powinny naprawić większość z tych problemów.

Wtyczki do bezpiecznej autoryzacji dla WordPressa

Kolekcja 6 wtyczek, które pozwolą Wam na wykorzystanie alternatywnych metod bezpiecznego logowania się do Waszego WordPressa.

Opis ciekawego filtra map_meta_cap

Filtr map_meta_cap pozwala nam modyfikować uprawnienia użytkowników i na przykład uniemożliwić innym administratorom usunięcie konkretnego konta.