Gravity Forms reCAPTCHA: lazy load po dotknięciu formularza 🚀

Formularz w stopce, który jest na każdej podstronie, ciągnie skrypt reCAPTCHA przy każdym wejściu i obniża wynik w PageSpeed. Większość odwiedzających go nie dotknie. Poniżej robię lazy load reCAPTCHA w Gravity Forms: skrypt ładuje się dopiero, gdy ktoś kliknie lub wejdzie klawiaturą w pole formularza 🤯

Dotyczy reCAPTCHA v2 (checkbox) w Gravity Forms. Wersja v3 działa inaczej i tego triku nie potrzebuje.

Pamiętaj, żeby zrobić test w Lighthouse przed zmianą i po niej, na tej samej stronie.

Krok 1: wyłącz domyślne ładowanie (PHP)

Bez tego kroku skrypt załaduje się dwa razy i pomiar nic nie pokaże. Gravity Forms rejestruje skrypt pod uchwytem gform_recaptcha. Wycinam jego znacznik <script> w filtrze script_loader_tag:

function my_theme_remove_gform_recaptcha_tag( $tag, $handle ) {
	return 'gform_recaptcha' === $handle ? '' : $tag;
}
add_filter( 'script_loader_tag', 'my_theme_remove_gform_recaptcha_tag', 10, 2 );

Dlaczego nie wp_dequeue_script w wp_footer? Gravity Forms drukuje ten skrypt w <head>, więc w stopce jest już za późno. Filtr znacznika działa niezależnie od tego, kiedy formularz dodaje skrypt.

Krok 2: załaduj skrypt na żądanie (JS)

window.addEventListener( 'load', () => {
	const container = document.querySelector( '.gform_wrapper' );
	let requested = false;

	if ( ! container ) {
		return;
	}

	container.addEventListener( 'focusin', ( event ) => {
		if ( requested || ! event.target.matches( 'input, select, textarea' ) ) {
			return;
		}

		if ( ! window.gform?.recaptcha?.needsRender() ) {
			return;
		}

		requested = true;

		const script = document.createElement( 'script' );
		script.src = 'https://www.google.com/recaptcha/api.js?hl=en&render=explicit';
		script.onload = () => gform.recaptcha.renderOnRecaptchaLoaded();
		document.head.appendChild( script );
	} );
} );
  • needsRender() i renderOnRecaptchaLoaded() to metody obiektu gform.recaptcha z dokumentacji Gravity Forms
  • focusin zamiast click: łapie też wejście Tabem, więc klawiatura nie omija ładowania
  • flaga requested blokuje wielokrotne dodanie skryptu przy kilku szybkich kliknięciach
  • do czasu pierwszego dotknięcia formularza Gravity Forms co 100 ms sprawdza, czy biblioteka reCAPTCHA już jest. To tani timer, ale nie znika, dopóki skrypt się nie załaduje

Checkbox pojawia się z krótkim opóźnieniem po pierwszym dotknięciu formularza. Przy formularzu w stopce nikt tego nie zauważy.

Uwagi

  • Wtyczki cache i optymalizacji (WP Rocket, Autoptimize, Rocket Loader w Cloudflare) potrafią przestawić kolejność skryptów. Wyłącz je na stronach z formularzem, gdy checkbox się nie renderuje
  • Formularz w popupie lub ładowany przez AJAX wymaga osobnego testu
  • Społeczność Gravity Forms pytała o to w 2022 i 2023. Oba wątki zamknięto bez rozwiązania

Sprawdź u siebie i napisz w komentarzu, ile punktów Performance zyskałeś 👏

Warp + herdr: cmd+p otwiera paletę poleceń 🚀

Chciałem mieć w Warpie skrót cmd+p, który otwiera paletę poleceń herdr. Problem: skróty w Warpie odpalają tylko wbudowane akcje. Nie wyślesz nimi tekstu ani sekwencji klawiszy (zgłoszenia #4045 i #14300 → #9159). Ghostty to umie dzięki keybind = ...=text:, Warp nie.

Rozwiązanie składa się z 4 kroków: plugin z paletą, skrót w herdr, wyłączenie palet Warpa, Karabiner-Elements jako tłumacz klawiszy.

Inspiracja

Pomysł podejrzałem w theskumar/dotfiles (plik docs/HERDR.md). Tam Ghostty na cmd+klawisz wysyła prefix herdr i dany klawisz. Zrobiłem to samo w Warpie, tylko inną drogą.

Czytaj dalej „Warp + herdr: cmd+p otwiera paletę poleceń 🚀” →

WordCamp Europe 2026: garść aktualizacji i kod zniżkowy na bilet!

Chyba nie muszę Ci mówić, że WCEU w Krakowie (4-6 czerwca 2026) to najlepsze miejsce, żeby złapać nowe kontakty, praktyczne know-how i świeże spojrzenie na kierunek rozwoju najpopularniejszego CMS na świecie.

Czytaj dalej „WordCamp Europe 2026: garść aktualizacji i kod zniżkowy na bilet!” →

WordCamp Europe 2026 – największa konferencja WordPress w Europie zawita do Krakowa!

Po niezapomnianej edycji w Bazylei, WordCamp Europe 2026 odbędzie się w Krakowie w dniach 4-6 czerwca 2026 roku. To wydarzenie, które przyciąga tysiące entuzjastów WordPressa z całej Europy, po raz pierwszy zawita do Polski!

Czytaj dalej „WordCamp Europe 2026 – największa konferencja WordPress w Europie zawita do Krakowa!” →

WordPress + MCP – pisz posty z Warp, Claude Code czy Cursor

Od jakiegoś czasu testuję połączenie WordPressa z Model Context Protocol (MCP). Efekt? Mogę zarządzać całym blogiem bezpośrednio z terminala czy edytora kodu. Piszę posty w Warp, Claude Code, Cursor – bez logowania do panelu wp-admin 🚀

Czytaj dalej „WordPress + MCP – pisz posty z Warp, Claude Code czy Cursor” →
white and blue printer paper

WordPress 6.4 zbliża się wielkimi krokami

Twenty Twenty-Four i inne nowości w WordPressie 6.4

W tym wpisie podsumowuję najważniejsze nowości, jakie wprowadza ta aktualizacja. Informacje pochodzą z 22 odcinka Soboty z WordPressem na moim kanale na YouTube. Poniżej lista najciekawszych usprawnień, jakie wprowadzi wersja 6.4.

Czytaj dalej „WordPress 6.4 zbliża się wielkimi krokami” →

Zapraszam na WordCamp Wrocław – 21.10.2023

1 3 1024x1024 1

Jako jeden z prelegentów chciałbym Was serdecznie zaprosić do Wrocławia, gdzie po raz trzeci 🤯 w tym roku spotkamy się, aby porozmawiać o WordPressie. Właśnie została opublikowana agenda i muszę przyznać, że wygląda zacnie. Koniecznie sprawdźcie agendę na stronie wydarzenia.

Ze swojej strony chciałbym serdecznie zaprosić Was na moją prelekcję „FSE Jak Zacząć„.

Czytaj dalej „Zapraszam na WordCamp Wrocław – 21.10.2023” →

Full Site Editing — notatki z warsztatów WordCamp Gdynia 2023

image
Autorem zdjęcia jest Dawid Urbański

Na samym początku bardzo dziękuję wszystkim za uczestnictwo w warsztatach ❤️. Dzięki również, za Wasze pytania, uwagi i dyskusje wokół tej rewolucyjnej zmiany w naszym ulubionym CMSie. Mam nadzieję, że dowiedzieliście się czegoś ciekawego i zdobyta wiedza pozwoli Wam z większą pewnością tworzyć motywy blokowe. Full site editing to rewolucja 🤯

Czytaj dalej „Full Site Editing — notatki z warsztatów WordCamp Gdynia 2023” →

10 tygodni SZW za nami 🚀 🥳

W tym krótkim wpisie chciałem się pochwalić małym jubileuszem związanym z serią live streamów, o której pisałem wcześniej — Sobota z WordPressem. Wspólnie z Dawidem Urbańskim po raz 10 z rzędu skończyliśmy właśnie live stream, podczas którego omawialiśmy najciekawsze rzeczy, które pojawią się w najnowszej wersji WordPressa, oznaczonej numerem 6.3. Wersja ta będzie dostępna od 8.8.2023. Kilka ciekawostek

  1. 10 odcinków prowadziłem z 4 różnych lokalizacji
    • Poznań
    • Ateny
    • Bory Tucholskie
    • Strony rodzinne (okolice Piły)
  2. Bardzo długo walczyłem z mikrofonem Rode Procaster, ale mimo tego każdy odcinek nagrany tym mikrofonem brzmiał fatalnie. Od dzisiaj mam taki sam sprzęt jak Dawid tj. Shure SM7 B 🔥
  3. Poprzednie 9 odcinków zostało odtworzonych ponad 100 razy 🤯

Czekamy z wypiekami na twarzy na najnowszą wersję a tymczasem zapraszam do obejrzenia najnowszego odcinka.

youtube logo png 2061

Sobota z WordPressem

sobota wordpressem youtube

Kilka tygodni temu wspólnie z Dawidem Urbańskim rozpoczęliśmy serię spotkań live na YouTube. Spotykamy się zazwyczaj w soboty (jak nazwa wskazuje) i robimy sobie przegląd wszystkiego, co związane z WordPressem oraz ogólnie pojętym web dewelopmentem. Póki co mamy na liczniku 6 spotkań, w tym spotkanie bezpośrednio z Aten podczas WordCamp Europe 💪. Do ilu dobijemy nie wiem, ale rozkręcamy się i póki co nie zamierzamy przestawać.