wPHP - wordpress, woocommerce - kodowanie bez wtyczek
WordPress - zakoduj to sam w PHP

Automatyczne aktualizacje wordpressa

Grzegorz Chodacki26 kwietnia 2023layout

Aby wyłączyć możliwość automatycznych aktualizacji WordPressa, musisz dodać poniższy kod w pliku wp-config.php. Najlepiej umieścić go przed komentarzem „To niesamowite, to już wszystko!”, który oznacza koniec pliku.

define('AUTOMATIC_UPDATER_DISABLED', true);

Wprowadzenie tej zmiany spowoduje wyłączenie automatycznych aktualizacji WordPressa, wtyczek i motywów. Jeśli chcesz wyłączyć tylko aktualizacje rdzenia WordPressa, ale pozwolić na automatyczne aktualizacje wtyczek i motywów, użyj poniższego kodu zamiast tego:

define('WP_AUTO_UPDATE_CORE', false);

Pamiętaj, że wyłączanie automatycznych aktualizacji może zwiększyć ryzyko wystąpienia problemów związanych z bezpieczeństwem i kompatybilnością na Twojej stronie. Upewnij się, że regularnie sprawdzasz dostępne aktualizacje i instalujesz je ręcznie, aby utrzymać swoją witrynę w jak najlepszym stanie.

Oczywiście odwrotne działania spowodują włączenie aktualizacji:

define('AUTOMATIC_UPDATER_DISABLED', false);

Do włączenia automatycznych aktualizacji możemy też użyć filtrów w functions.php. Aby włączyć automatyczne aktualizacje wtyczek za pomocą pliku functions.php, możesz dodać poniższy kod do tego pliku:

add_filter( 'auto_update_plugin', '__return_true' );

Po dodaniu tego kodu do pliku functions.php, automatyczne aktualizacje wtyczek zostaną włączone. Upewnij się jednak, że WordPress ma odpowiednie uprawnienia do zapisu w swoich katalogach, aby automatyczne aktualizacje mogły działać poprawnie.

Jeśli chciałbyś włączyć automatyczne aktualizacje motywów, dodaj również poniższy kod do pliku functions.php:

add_filter( 'auto_update_theme', '__return_true' );

Pamiętaj, że włączanie automatycznych aktualizacji wtyczek i motywów może czasami prowadzić do problemów z kompatybilnością lub błędami, szczególnie jeśli używasz niestandardowych lub zmodyfikowanych motywów i wtyczek. Regularnie monitoruj swoją stronę, aby upewnić się, że wszystko działa poprawnie po aktualizacji.

Jak wyłączyć wymagane pola na stronie zamówienia woocommerce

Grzegorz Chodacki25 kwietnia 2023woocommerce

Czasami zachodzi potrzeba wyłączenia, niektórych wymaganych pól na stronie zamówienia. Np. mamy tego typu wysyłkę, że klient nie chce podawać imienia i nazwiska. Albo chce dyskretnie na numer paczkomatu, bez podawania adresu domowego.

Oczywiście możemy zrobić to za pomocą wtyczki Checkout Field Editor, ale jest ona komercyjna i bez corocznych aktualizacji potrafi popsuć zaplecze. Dlatego możemy skorzystać z prostego kodu:

// Zmienia pola imienia i nazwiska na opcjonalne
function wc_make_name_fields_optional( $fields ) {
 // Ustawienie pola imienia jako opcjonalne
 $fields['billing']['billing_first_name']['required'] = false;
 $fields['shipping']['shipping_first_name']['required'] = false;

 // Ustawienie pola nazwiska jako opcjonalne
 $fields['billing']['billing_last_name']['required'] = false;
 $fields['shipping']['shipping_last_name']['required'] = false;

 return $fields;
}
add_filter( 'woocommerce_checkout_fields', 'wc_make_name_fields_optional' );

Po zastosowaniu tych zmian, pola „imię” i „nazwisko” nie będą już wymagane w formularzu zamówienia na stronie WooCommerce. Oczywiście manipulując polami na stronie zamówienia pamiętajmy, że zmiany mogą naruszać przepisy o ochronie danych osobowych.

W WooCommerce na stronie zamówienia znajduje się wiele innych pól formularza oprócz imienia i nazwiska. Poniżej podaję listę podstawowych pól dla sekcji płatności (billing) i dostawy (shipping). Oczywiście, pola te mogą ulec zmianie w zależności od dodatków lub modyfikacji wprowadzonych na Twojej stronie.

Sekcja płatności (billing) woocommerce

  1. Imię: $fields['billing']['billing_first_name']
  2. Nazwisko: $fields['billing']['billing_last_name']
  3. Firma: $fields['billing']['billing_company']
  4. Kraj/Region: $fields['billing']['billing_country']
  5. Adres linia 1: $fields['billing']['billing_address_1']
  6. Adres linia 2: $fields['billing']['billing_address_2']
  7. Miasto: $fields['billing']['billing_city']
  8. Kod pocztowy: $fields['billing']['billing_postcode']
  9. Stan/województwo: $fields['billing']['billing_state']
  10. Numer telefonu: $fields['billing']['billing_phone']
  11. Adres e-mail: $fields['billing']['billing_email']

Sekcja dostawy (shipping) woocommerce

  1. Imię: $fields['shipping']['shipping_first_name']
  2. Nazwisko: $fields['shipping']['shipping_last_name']
  3. Firma: $fields['shipping']['shipping_company']
  4. Kraj/Region: $fields['shipping']['shipping_country']
  5. Adres linia 1: $fields['shipping']['shipping_address_1']
  6. Adres linia 2: $fields['shipping']['shipping_address_2']
  7. Miasto: $fields['shipping']['shipping_city']
  8. Kod pocztowy: $fields['shipping']['shipping_postcode']
  9. Stan/województwo: $fields['shipping']['shipping_state']

Dodatkowo, na stronie zamówienia znajdują się również pola związane z kontem klienta oraz różne pola dotyczące zamówienia (np. pola dotyczące płatności). Te pola są przechowywane w innych tablicach, takich jak $fields['account'] czy $fields['order'].

W zależności od potrzeb, możesz modyfikować te pola, korzystając z filtrów takich jak woocommerce_checkout_fields i dostosować je do swoich wymagań.

Jak wstawić kod HTML lub shortcode w opisach kategorii produktów

Grzegorz Chodacki24 kwietnia 2023layout shortcode, term_description

Czasami zachodzi potrzeba użycia bardziej rozbudowanego kodu w opisie kategorii produktów lub użycia shortcode. Niestety domyślne ustawienia nie pozwalają na to. Musimy wtedy użyć drobnej modyfikacji.

Oto sposób na dodanie obsługi shortcode’ów i HTML do opisów kategorii produktów w WooCommerce:

  1. Otwórz plik functions.php w aktywnym motywie: W panelu administracyjnym WordPress przejdź do „Wygląd” > „Edytor motywów”. Z lewej strony znajdź i otwórz plik functions.php. Upewnij się, że robisz kopię zapasową swojej strony przed wprowadzaniem zmian w plikach motywu.
  2. Dodaj poniższy kod do pliku functions.php:
// Filtr, który pozwala na obsługę HTML w opisach kategorii produktów
function wc_allow_html_in_category_description( $taxonomy ) {
 if ( 'product_cat' === $taxonomy ) {
 remove_filter( 'pre_term_description', 'wp_filter_kses' );
 remove_filter( 'term_description', 'wp_kses_data' );
 }
}
add_action( 'init', 'wc_allow_html_in_category_description' );

// Filtr, który pozwala na obsługę shortcode'ów w opisach kategorii produktów
function wc_do_shortcode_in_category_description( $description, $term_id ) {
 if ( in_array( 'product_cat', get_term_by( 'id', $term_id, ARRAY_A, 'taxonomy' ) ) ) {
 return do_shortcode( $description );
 }
 return $description;
}
add_filter( 'term_description', 'wc_do_shortcode_in_category_description', 10, 2 );

Dzisiaj wyjątkowo instrukcja dla instalatorów wtyczek. Powyższe funkcjonalności włączy dla Was wtyczka WP Editor.

Aby umieścić shortcode lub kod HTML w opisie kategorii produktów w WooCommerce, wykonaj poniższe kroki:

  1. Zainstaluj i aktywuj wtyczkę „WP Editor”: WP Editor to wtyczka, która pozwoli na edycję kodu HTML i obsługę shortcode’ów w opisach kategorii produktów. Pobierz wtyczkę z oficjalnej strony WordPress.org lub zainstaluj ją bezpośrednio z panelu administratora WordPress.
  2. Dodaj lub edytuj kategorię produktu: Po aktywacji wtyczki „WP Editor”, przejdź do panelu administracyjnego WordPress, a następnie kliknij na „Produkty” > „Kategorie”. Możesz dodać nową kategorię produktów lub wybrać istniejącą kategorię do edycji.
  3. Wstaw kod HTML lub shortcode: W polu opisu kategorii zobaczysz teraz edytor WP Editor. Możesz użyć edytora tekstowego (zakładka „Text”) do wklejenia kodu HTML lub shortcode’u. Jeśli używasz edytora wizualnego (zakładka „Visual”), użyj przycisku „</>” („Wstaw kod HTML”) w pasku narzędzi, aby wkleić kod HTML.
  4. Zapisz zmiany: Po wstawieniu kodu HTML lub shortcode’u kliknij przycisk „Dodaj nową kategorię” lub „Aktualizuj”, aby zapisać zmiany.

Teraz, gdy wyświetlasz stronę kategorii produktów na swojej witrynie, kod HTML lub shortcode zostanie prawidłowo wyświetlony i przetworzony. Pamiętaj jednak, że nie wszystkie shortcode’y mogą działać poprawnie w opisie kategorii, a niektóre mogą wymagać dodatkowej konfiguracji lub modyfikacji kodu źródłowego.

Jak wyłączyć odzyskiwanie hasła

Grzegorz Chodacki8 września 2022layout

Sytuacja tak, że trzeba było zmienić hasła dla wszystkich adminów, ale bez usuwania ich kont. Natomiast trzeba było wyłączyć możliwość odzyskiwania hasła, żeby zablokowany użytkownik nie mógł go sobie zresetować. Oczywiście mały kod w functions.php

function disable_password_reset() { return false; }
add_filter ( 'allow_password_reset', 'disable_password_reset' );
api-nbp

Pobieranie aktualnego kursu walut przez API NBP

Grzegorz Chodacki8 września 2022layout

Jakiś czas temu zdarzyło się zadanie od klienta, który chciał mieć część produktów woocommerce z cenami w euro a część w złotówkach. I żeby nie było tak prosto to niech jeszcze system przelicza to euro na złotówki dla klienta. A co tam – niech je jeszcze przelicza po aktualnych kursach bo przecież co chwila coś się zmienia. Pierwszy etap rzeczywiście udało się zrealizować za pomocą darmowej wtyczki. Można było napisać samemu kod, ale mi się nie chciało, bo klient i tak by nie docenił wysiłku. Drugi etap postanowiłem sam rozwiązać dla własnej nauki i przyjemności. Skorzystałem z ogólnie dostępnego kodu api Narodowego Banku Polskiego. Kod php jest bardzo prosty i krótki:

$dane = file_get_contents('https://api.nbp.pl/api/exchangerates/rates/a/eur?format=json');
$json = json_decode($dane);
$kurs = $json->rates[0]->mid;

Samą poprawność linku możemy sprawdzić wyświetlając adres https://api.nbp.pl/api/exchangerates/rates/a/eur w przeglądarce. W wyniku otrzymamy kod XML.

Oczywiście wyświetlić możemy kurs dowolnej waluty. Po więcej szczegółów warto zerknąć do dokumentacji api.nbp.pl

Poczta interia – nie dochodzą maile

Grzegorz Chodacki13 lipca 2022layout

Jeden z klientów miał spory problem. Powiadomienia o zakupach, resetowanie haseł nie dochodziły na skrzynki pocztowe Interia. Niby śmieszny problem bo przecież każdy teraz używa gmail, ale akurat u tego klienta 30% klientów miało konta na interia.

Post będzie krótki, ale konkretny. Z problemem walczyłem prawie pół roku.

Nie pomogło wysyłanie maili poprzez SMTP – w tym wypadku używam wtyczki. Lubię wtyczki, które służą czemuś konkretnemu, są aktualizowane i nie stanowią większego zagrożenia.

Nie pomogło dodanie w DNS rekordów DKIM.

Nie pomogło też szukanie w dokumentacji Interii czy na forach.

Dlatego zastosowałem pewną sztuczkę. W domenie, z której maile były odrzucane założyłem sobie konto. Założyłem również sobie konto na interia. I rozpocząłem namiętne wysyłanie maili między sobą z czego się da by złapać choć odrobinę komunikatu z serwera, którego w teorii zrozumieć się nie da.

I to mi się udało. Wprawdzie z 72 godzinnym opóźnieniem ale jednak.

Uwielbiam czytać komunikaty, uwielbiam czytać dokumentacje. Wielu ludzi tego nauczyłem, ale są też tacy którzy wolą kliknąć 10 razy zanim coś przeczytają.

Dopiero w takiej informacji zwrotnej znalazłem ukryty link do formularza, który zawierał konkretne informacje. Przepraszam, dużo informacji i możliwości.

Adres IP serwera, z którego wysyłasz e-maile, został uznany za źródło spamu.

Stało się tak, ponieważ użytkownicy Poczty Interia masowo oznaczają wiadomości z tego adresu IP jako SPAM.

W ramach ochrony naszych użytkowników Twój e-mail został zablokowany.

Nie wysyłasz spamu, a mimo to wiadomość została odrzucona? Może to wynikać z kilku powodów:

– korzystasz z serwera współdzielonego (Twój serwer poczty rozsyła wiadomości z kilku domen, np. platformy hostingowe),

– wiadomości transakcyjne i maile reklamowe wysyłasz z tych samych IP,

– Twoja domena ma niepoprawnie skonfigurowany rekord TXT SPF: adres IP, z którego wysyłasz maile, nie występuje w rekordzie SPF lub nie jest zamknięty (~all zamiast -all),

– Twoja domena nie ma poprawnie skonfigurowanego rekordu PTR adresu IP, z którego wysyłasz maile.

I kluczem programu okazuje się ten fragment:

(~all zamiast -all)

Zmiana tego rekordu w DNS cudownie odblokowała maile.

Żeby nie było szukałem wcześniej w Internecie informacji na ten temat. I powiem szczerze, lepiej spędziłbym ten czas w internacie (szczególnie żeńskim).

Wyszukiwanie postów tylko po tytułach

Grzegorz Chodacki1 kwietnia 2022layout, woocommerce posts_where, wp_query

Temat wydawał się dość prosty, a jednak zajął mi trochę czasu. Wujek Google wcale nie jest tak łaskawy w odpowiedzi na pytanie co zrobić aby wyniki wyszukiwania w wordpress obejmowały jedynie szukanie po tytułach postów (produktów) a nie po całej treści (opisie).

More

Related product – produkty podobne w woocommerce

Grzegorz Chodacki31 marca 2022layout

Produkty powiązane w woocommerce to sekcja w większości szablonów, która pobiera produkty z naszego sklepu. Domyślnie mają one te same tagi lub kategorie co przeglądany produkt.

Przy dużej ilości produktów w sklepie, a co gorsza dużej ilości kategorii, bardzo losowy dobór produktów podobnych może być dość kłopotliwy. Tym bardziej, że nie możemy ich teoretycznie ustawić ręcznie na zapleczu.

Najprostszym rozwiązaniem, o którym często zapominamy, jest możliwość odpowiedniego połączenia produktów poprzez te same tagi. Wprawdzie zalecam tutaj ostrożność, gdyż nieumiejętne stosowanie tagów może doprowadzić do kanibalizacji strony. Czyli wygenerujemy sztucznie strony o identycznej zawartości a o różnych adresach url.

Na szczęście kod woocommerca daje nam wiele możliwości wpływania na to jak wyglądają PRODUKTY PODOBNE.

More

Jak przyspieszyć stronę wyłączając odświeżanie koszyka woocoomerce

Grzegorz Chodacki31 marca 2022optymalizacja, woocommerce wc-ajax, woocommerce_cart_fragments

Bardzo często zdarza się, że nasza strona z woocommerce działa wolno. Narzędzia do testowania prędkości typu GTMetrix, często pokazują, że wpływ na prędkość ładowania strony może mieć skrypt wc-ajax=get_refreshed_fragments. Generuje on opóźnienia i obciążenie serwera. Do czego jest on potrzebny, czy jest potrzebny i jak go wyłączyć?

More

Dodanie niestandardowych pól do produktu WooCoomerce

Maja Sędziak12 października 2021layout, woocommerce

Zagadnienie dotyczy innego podejścia niż przy poprzednim wpisie. Poprzednio dla produktów prostych i produktów z wariantami wyliczana była cena za 1m2 na podstawie wymiarów produktu po czym wyświetlana na karcie produktu. Tym razem dodamy dodatkowe pola od strony zaplecza, tj. cenę (pole input) oraz jednostkę (pole wyboru select). Trudność polega na tym, że w zależności od tego czy produkt jest prosty czy z wariantami, ceny wyświetlane są w różnych miejscach w tabeli produktu, dlatego użyte zostaną zupełnie inne hooki.

More
1 2 3 4›»

Ostatnie wpisy

  • Automatyczne aktualizacje wordpressa
  • Jak wyłączyć wymagane pola na stronie zamówienia woocommerce
  • Jak wstawić kod HTML lub shortcode w opisach kategorii produktów
  • Jak wyłączyć odzyskiwanie hasła
  • Pobieranie aktualnego kursu walut przez API NBP

Najnowsze komentarze

    Archiwa

    • kwiecień 2023
    • wrzesień 2022
    • lipiec 2022
    • kwiecień 2022
    • marzec 2022
    • październik 2021
    • wrzesień 2021
    • kwiecień 2021
    • marzec 2021
    • grudzień 2020
    • lipiec 2020
    • marzec 2020
    • luty 2020
    • styczeń 2020
    • maj 2019
    • luty 2019
    • listopad 2018
    • sierpień 2018
    • czerwiec 2018
    • maj 2018
    • marzec 2018
    • luty 2018
    • styczeń 2018

    Kategorie

    • dla admina
    • layout
    • optymalizacja
    • woocommerce

    Meta

    • Zaloguj się
    • Kanał wpisów
    • Kanał komentarzy
    • WordPress.org
    Strony na Wordpress - uKONTENTowani.pl
    TO NIE JEST STRONA DLA INSTALATORÓW WTYCZEK