LW IT Solutions
« Blog Overview /Wtyczki i triki WordPress / Katalog wtyczek WordPress.org: za co odrzucane są...
This post in other languages:

Katalog wtyczek WordPress.org: za co odrzucane są zgłoszenia

Katalog wtyczek WordPress.org: za co odrzucane są zgłoszenia
Spis treści
  1. Osiemnaście wytycznych w czterech grupach
  2. Licencja, czytelny kod i dołączone biblioteki
  3. Trialware, usługi i kod z obcych serwerów
  4. Zgoda przed zapytaniami i linki na stronie publicznej
  5. Nazwa wtyczki, slug i znaki towarowe
  6. Od przesłania ZIP-a do pierwszego commita w SVN
  7. Ograniczenia i otwarte kwestie
  8. Pytania i odpowiedzi
  9. Źródła

Wtyczka, która bez błędów działa na instalacji testowej, nie jest jeszcze wtyczką, którą WordPress.org przyjmie do katalogu. Każde nowe zgłoszenie przechodzi automatyczną kontrolę wstępną, a potem ręczny przegląd wykonywany przez Plugins Team według Detailed Plugin Guidelines. Według stanu z 29.09.2026 strona zawiera 18 ponumerowanych wytycznych, ostatnio zaktualizowanych 11.03.2026. Zastrzeżenia opisywane przez zespół rzadko dotyczą nietypowych przypadków; częściej są to powtarzające się wzorce: brakujące lub sprzeczne informacje o licencji, funkcje zablokowane do czasu zapłaty, nieujawnione zapytania do obcych serwerów, domyślnie włączone linki z podziękowaniem i nazwy zaczynające się od cudzego znaku towarowego.

Artykuł grupuje 18 wytycznych tematycznie, na przykładzie krótkiej wtyczki pokazuje zgodę przed zapytaniem wychodzącym i link z podziękowaniem na zasadzie opt-in, wyjaśnia, jak powstaje slug, i prowadzi zgłoszenie od przesłania ZIP-a do pierwszego commita w SVN, łącznie z danymi o kolejce z 28.09.2026. Plugin Check, funkcje bezpieczeństwa i format readme mają w tej serii osobne artykuły. Wpisy o własnych wtyczkach Lite Page Cache i WP Admin Captcha pokazują, co takie wtyczki robią na stronie; tutaj chodzi o drogę do oficjalnego katalogu.

Osiemnaście wytycznych w czterech grupach

Numer wytycznej nie mówi nic o tym, jak często prowadzi ona do odrzucenia, a Plugins Team nie publikuje takiego zestawienia. Raport roczny za 2025 rok podaje tylko sumy: 12 713 sprawdzonych wtyczek, 5415 zatwierdzonych, 59 137 wykrytych problemów, a w przypadku 38,7 procent sprawdzonych wtyczek autorzy nie odpowiedzieli. Zespół prowadzi też stronę podręcznika „Common issues” z fragmentami wiadomości z przeglądów, ale i ona nie porządkuje problemów według częstotliwości i sama określa się jako niekompletna. Kolejność w artykule wynika z tematów tej strony i FAQ dla twórców; to grupowanie, a nie ranking.

Grupa Wytyczne Główna zasada
Licencja i kod 1, 4, 13 Licencja zgodna z GPL, czytelny kod, bez dołączonych bibliotek z rdzenia
Model biznesowy 5, 6, 8 Bez blokowania funkcji, udokumentowane usługi, bez kodu i aktualizacji z obcych serwerów
Ochrona użytkowników 7, 10, 11 Zgoda przed kontaktem z zewnątrz, podziękowania domyślnie wyłączone, bez przejmowania kokpitu
Katalog i postępowanie 2, 3, 9, 12, 14–18 Odpowiedzialność, uczciwość, brak spamu w readme, SVN tylko na wydania, kompletna wtyczka, znaki towarowe

Dwie wytyczne stanowią ramę dla pozostałych. Według wytycznej 2 twórca odpowiada za każdy plik, także za biblioteki zewnętrzne, oraz za warunki usług, z których korzysta wtyczka. Wytyczna 18 zastrzega prawo do zmiany zasad, usuwania wtyczek, przyznawania wyjątków i działania także z powodów, których lista nie wymienia. Wytyczne są minimum, a nie zamkniętą umową.

Licencja, czytelny kod i dołączone biblioteki

Wytyczna 1 wymaga licencji zgodnej z GNU General Public License; zalecana jest „GPLv2 or later”, licencja samego WordPressa. Wymóg obejmuje całą zawartość pliku ZIP, także pliki danych i obrazy, a komponenty zewnętrzne ocenia się według listy zgodnych licencji na gnu.org. „Common issues” pokazuje kilka odmian tego samego problemu: brak deklaracji licencji zgodnej z GPL, różne licencje w readme i w nagłówku wtyczki, niezgodny kod w paczce oraz zminifikowane pliki bez udokumentowanego źródła.

Ostatni punkt dotyczy wytycznej 4. Zaciemniony kod jest zabroniony, a zminifikowane pliki są akceptowane tylko wtedy, gdy czytelne źródło jest dołączone lub publicznie podlinkowane w readme. Wtyczka korzystająca z Composera powinna zawierać composer.json. Wytyczna 13 zakazuje dołączania bibliotek, które WordPress już zawiera; „Common issues” wymienia m.in. jQuery, SimplePie, PHPMailer i PHPass. Ta sama strona wskazuje pozostałości po pracy nad kodem, takie jak node_modules, testy i katalogi demonstracyjne. Żadna z tych poprawek nie jest trudna, ale każda kosztuje rundę korespondencji. Pola nagłówka i readme omawia osobny artykuł tej serii.

Trialware, usługi i kod z obcych serwerów

Najostrzejsze granice dotyczą modelu biznesowego. Wytyczna 5 zakazuje trialware: funkcje nie mogą być zablokowane do czasu zapłaty ani przestawać działać po okresie próbnym lub po wyczerpaniu limitu. Sam dostęp do API w trybie sandbox również uznaje się za trialware. Wytyczna 9 dodaje, że sugerowanie konieczności zapłaty za funkcje już zawarte we wtyczce jest nieuczciwe.

To, co dozwolone, opisuje wytyczna 6. Wtyczka może być interfejsem do zewnętrznej, także płatnej usługi, jeśli usługa zapewnia istotną funkcjonalność i jest opisana w readme, najlepiej z linkiem do warunków korzystania. Wykluczone są usługi, które tylko sprawdzają licencję, podczas gdy cała funkcja siedzi we wtyczce, kod przeniesiony na serwer wyłącznie dla pozoru oraz same sklepy.

Stronę techniczną reguluje wytyczna 8. Kod z udokumentowanej usługi wolno ładować przez bezpieczne połączenie. Zabronione są aktualizacje i instalacje wtyczek, motywów i dodatków z serwerów innych niż WordPress.org, instalowanie wersji premium tej samej wtyczki, obce CDN do celów innych niż czcionki oraz strony administracyjne osadzane w iframe. „Common issues” uzupełnia, że wtyczki nie mogą łączyć się z innymi serwerami w sprawie aktualizacji ani przenosić na zewnątrz obrazów, skryptów czy arkuszy stylów niezwiązanych z usługą.

Dla modelu freemium wynika z tego jasny schemat. Bezpłatna wtyczka musi być kompletna sama w sobie, płatne funkcje mogą działać w usłudze, a komunikaty o wersji rozszerzonej są dozwolone w granicach wytycznej 11: w odpowiednim kontekście lub na stronie ustawień, a komunikaty w całym panelu muszą dać się zamknąć. Bezpłatna wtyczka nie może sama pobierać i instalować swojej płatnej wersji.

Zgoda przed zapytaniami i linki na stronie publicznej

Wytyczna 7 zakazuje kontaktu z obcymi serwerami bez wyraźnej i świadomej zgody, uzyskiwanej zwykle przez opt-in, rejestrację w usłudze lub pole wyboru w ustawieniach. Zbieranie danych należy opisać w readme, najlepiej wraz z polityką prywatności. Jako niedozwolone wytyczna wymienia m.in. automatyczne zbieranie danych bez potwierdzenia, przenoszenie zasobów niezwiązanych z usługą, nieudokumentowane korzystanie z danych zewnętrznych, na przykład list blokad, oraz reklamy firm trzecich śledzące wyświetlenia. Wyjątek dotyczy wtyczek będących interfejsem do usługi, na przykład filtra antyspamowego z zewnętrznym API: instalacja i konfiguracja oznaczają w takim przypadku zgodę.

Wytyczna 10 przenosi tę zasadę na front strony. Dopiski „Powered by” i linki muszą być opcjonalne i domyślnie wyłączone, opt-in ma być jasno opisanym wyborem, a nie zdaniem w warunkach korzystania, a działanie wtyczki nie może zależeć od wyświetlanego podziękowania.

Poniższa wtyczka oblicza czas czytania całkowicie lokalnie i oferuje dwa opcjonalne dodatki: cotygodniowe statystyki użycia wysyłane na przykładowy serwer oraz link do strony wtyczki. Obie opcje mają domyślnie wartość false. Bez zgody funkcja statystyk kończy działanie, zanim powstanie jakiekolwiek zapytanie, a link pojawia się dopiero po drugim opt-in. Ponieważ HTTP API w domyślnym User-Agencie przesyła adres strony, przykład ustawia własny User-Agent.

<?php
/**
 * Plugin Name:       Reading Time Badge
 * Description:       Shows the estimated reading time above posts. Usage statistics and a credit link are opt-in.
 * Version:           1.0.0
 * Requires at least: 6.5
 * Requires PHP:      7.4
 * License:           GPLv2 or later
 * License URI:       https://www.gnu.org/licenses/gpl-2.0.html
 * Text Domain:       reading-time-badge
 *
 * @package ReadingTimeBadge
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

define( 'RTBADGE_VERSION', '1.0.0' );
define( 'RTBADGE_STATS_URL', 'https://stats.example.com/v1/ping' );

/**
 * Returns the settings merged with defaults. Every outgoing feature is off by default.
 *
 * @return array
 */
function rtbadge_get_settings() {
	$defaults = array(
		'share_stats' => false,
		'show_credit' => false,
	);
	return wp_parse_args( (array) get_option( 'rtbadge_settings', array() ), $defaults );
}

/**
 * Stores exactly two booleans, whatever the form sends.
 *
 * @param mixed $input Raw option value.
 * @return array
 */
function rtbadge_sanitize_settings( $input ) {
	$input = is_array( $input ) ? $input : array();
	return array(
		'share_stats' => ! empty( $input['share_stats'] ),
		'show_credit' => ! empty( $input['show_credit'] ),
	);
}

add_action( 'admin_init', 'rtbadge_register_settings' );

/**
 * Registers the option with a sanitize callback.
 */
function rtbadge_register_settings() {
	register_setting(
		'rtbadge',
		'rtbadge_settings',
		array(
			'type'              => 'array',
			'sanitize_callback' => 'rtbadge_sanitize_settings',
			'default'           => array(
				'share_stats' => false,
				'show_credit' => false,
			),
		)
	);
}

add_action( 'admin_menu', 'rtbadge_add_settings_page' );

/**
 * Adds the settings page below Settings.
 */
function rtbadge_add_settings_page() {
	add_options_page(
		__( 'Reading Time Badge', 'reading-time-badge' ),
		__( 'Reading Time Badge', 'reading-time-badge' ),
		'manage_options',
		'rtbadge',
		'rtbadge_render_settings_page'
	);
}

/**
 * Renders two unchecked-by-default opt-in checkboxes.
 */
function rtbadge_render_settings_page() {
	if ( ! current_user_can( 'manage_options' ) ) {
		return;
	}
	$settings = rtbadge_get_settings();
	?>
	<div class="wrap">
		<h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
		<form action="options.php" method="post">
			<?php settings_fields( 'rtbadge' ); ?>
			<p>
				<label>
					<input type="checkbox" name="rtbadge_settings[share_stats]" value="1" <?php checked( $settings['share_stats'] ); ?>>
					<?php esc_html_e( 'Send usage statistics (plugin, WordPress and PHP version) to stats.example.com once a week.', 'reading-time-badge' ); ?>
				</label>
			</p>
			<p>
				<label>
					<input type="checkbox" name="rtbadge_settings[show_credit]" value="1" <?php checked( $settings['show_credit'] ); ?>>
					<?php esc_html_e( 'Show a link to the plugin website next to the reading time on the public site.', 'reading-time-badge' ); ?>
				</label>
			</p>
			<?php submit_button(); ?>
		</form>
	</div>
	<?php
}

add_action( 'admin_init', 'rtbadge_maybe_send_stats' );

/**
 * Sends usage statistics at most once a week, and only after opt-in.
 */
function rtbadge_maybe_send_stats() {
	$settings = rtbadge_get_settings();
	if ( ! $settings['share_stats'] ) {
		return; // No consent: no request at all.
	}
	if ( false !== get_transient( 'rtbadge_stats_sent' ) ) {
		return;
	}
	set_transient( 'rtbadge_stats_sent', 1, WEEK_IN_SECONDS );

	wp_remote_post(
		RTBADGE_STATS_URL,
		array(
			'blocking'   => false,
			'timeout'    => 5,
			// The default user agent of the HTTP API contains the site URL; replace it.
			'user-agent' => 'reading-time-badge/' . RTBADGE_VERSION,
			'body'       => array(
				'plugin_version' => RTBADGE_VERSION,
				'wp_version'     => get_bloginfo( 'version' ),
				'php_version'    => PHP_VERSION,
			),
		)
	);
}

add_filter( 'the_content', 'rtbadge_prepend_reading_time' );

/**
 * Prepends the reading time. The credit link appears only after opt-in.
 *
 * @param string $content Post content.
 * @return string
 */
function rtbadge_prepend_reading_time( $content ) {
	if ( ! is_singular( 'post' ) || ! in_the_loop() || ! is_main_query() ) {
		return $content;
	}
	$words   = preg_split( '/\s+/u', trim( wp_strip_all_tags( $content ) ), -1, PREG_SPLIT_NO_EMPTY );
	$minutes = max( 1, (int) ceil( count( $words ) / 200 ) ); // Assumes 200 words per minute.

	$badge = '<p class="rtbadge">' . esc_html(
		sprintf(
			/* translators: %d: estimated reading time in minutes */
			_n( '%d minute read', '%d minutes read', $minutes, 'reading-time-badge' ),
			$minutes
		)
	);

	$settings = rtbadge_get_settings();
	if ( $settings['show_credit'] ) {
		$badge .= ' &middot; <a href="' . esc_url( 'https://example.com/reading-time-badge/' ) . '">'
			. esc_html__( 'Reading Time Badge', 'reading-time-badge' ) . '</a>';
	}

	return $badge . '</p>' . $content;
}

Readme opisuje, co, kiedy i dokąd jest wysyłane. Dokładnie tych elementów „Common issues” oczekuje przy usługach zewnętrznych: kiedy wtyczka korzysta z usługi, linku do niej oraz linków do warunków korzystania lub polityki prywatności. Nagłówek w przykładzie to propozycja, a nie wymóg.

== Privacy and external services ==

Reading Time Badge calculates the reading time locally and works without any external service.

If the option "Send usage statistics" under Settings > Reading Time Badge is enabled,
the plugin sends the plugin version, the WordPress version and the PHP version
to stats.example.com once a week. The request contains no site URL, no user data
and no content. As with any HTTP request, the server's IP address is visible to the service.
The option is disabled by default.

* Service: https://stats.example.com/
* Terms of use: https://stats.example.com/terms/
* Privacy policy: https://stats.example.com/privacy/

Nazwa wtyczki, slug i znaki towarowe

Slug to stały adres wtyczki w katalogu i w SVN. Według strony zgłoszeń powstaje z nagłówka Plugin Name; jeśli nazwa jest zajęta, dopisywany jest numer. FAQ dla twórców pozwala raz zmienić slug po zgłoszeniu, a po zatwierdzeniu już wcale, natomiast wyświetlana nazwa pozostaje zmienna.

Wytyczna 17 zabrania, aby znak towarowy lub nazwa innego projektu była jedynym albo pierwszym członem sluga, chyba że udowodniono prawo własności lub upoważnienie. Przykładem jest sam WordPress: znak należy do WordPress Foundation, a zasada obejmuje wprost także slugi wtyczek. Pozostałym wytyczna zaleca formę „Funkcja for Marka”, a jeszcze lepiej oryginalną nazwę. Wytyczna 16 dodaje, że slugów nie da się rezerwować; zgłasza się wyłącznie kompletną wtyczkę.

Nagłówek Plugin Name Slug Wytyczna 17
WordPress Delivery Dates wordpress-delivery-dates Zaczyna się od chronionego terminu, niedopuszczalny
WooCommerce Delivery Dates woocommerce-delivery-dates Dopuszczalny tylko dla właściciela znaku
Delivery Dates for WooCommerce delivery-dates-for-woocommerce Odpowiada formie „Funkcja for Marka”

Nagłówek trzeciego wariantu przedstawiono poniżej. „Common issues” oczekuje też, że plik główny będzie nazwany jak slug, a Text Domain będzie z nim zgodna.

<?php
/**
 * Plugin Name: Delivery Dates for WooCommerce
 * Description: Lets customers pick a delivery date at checkout.
 * Version:     1.0.0
 * License:     GPLv2 or later
 * Text Domain: delivery-dates-for-woocommerce
 *
 * @package DeliveryDatesForWooCommerce
 */

// Main file: delivery-dates-for-woocommerce/delivery-dates-for-woocommerce.php
// Slug proposed on submission: delivery-dates-for-woocommerce

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

Znaczenie ma też konto, z którego wysyłane jest zgłoszenie. FAQ dopuszcza z reguły jedno zgłoszenie naraz, do dziesięciu przy ponad milionie aktywnych instalacji, i zawiesza konta dodatkowe zakładane w celu obejścia limitu. Organizacje zgłaszają wtyczki z oficjalnego konta. Wytyczna 9 zakazuje kont-marionetek i fałszywej tożsamości służącej obejściu wcześniejszych sankcji. Od 01.10.2024 uwierzytelnianie dwuskładnikowe jest obowiązkowe dla wszystkich kont właścicieli wtyczek i osób z prawem commita.

Od przesłania ZIP-a do pierwszego commita w SVN

Na początku jest plik ZIP mniejszy niż 10 MB, który da się zainstalować przez funkcję przesyłania wtyczek w kokpicie. Od 01.10.2024 przechodzi on najpierw przez kategorię „Plugin Repo” narzędzia Plugin Check; wynik na poziomie błędu blokuje zgłoszenie do czasu poprawki. Ten krok opisuje osobny artykuł o Plugin Check. Po przesłaniu przychodzi potwierdzenie, a wtyczka trafia do kolejki.

Ręczny przegląd obejmuje bezpieczeństwo, zgodność, przestrzeganie wytycznych i prezentację. Bez uwag wtyczka jest zatwierdzana, w przeciwnym razie wiadomość wymienia potrzebne zmiany. FAQ prosi o odpowiedź w tym samym wątku i o niezgłaszanie wtyczki ponownie. Wyjątek: przegląd niezakończony w ciągu trzech miesięcy kończy się odrzuceniem, a wtedy należy zgłosić wtyczkę ponownie i odpowiedzieć na starą wiadomość.

Po zatwierdzeniu e-mail wyjaśnia dostęp do repozytorium Subversion pod adresem https://plugins.svn.wordpress.org/ uzupełnionym o slug, z katalogami trunk/, tags/ i assets/. W nazwie użytkownika liczy się wielkość liter, a w ustawieniach konta da się ustawić osobne hasło do SVN. Według FAQ wtyczka jest publiczna, gdy tylko kod trafi do repozytorium. Kolejne wydania od 05.06.2026 czekają przed dystrybucją przez API aktualizacji obecnie sześć godzin; w tym czasie automatyczna kontrola bezpieczeństwa analizuje zmiany i blokuje wydania z wysoką oceną ryzyka.

Od przesłania ZIP-a do pierwszego commita w SVN
Droga nowego zgłoszenia do katalogu wtyczek WordPress.org, z pętlami po błędach, uwagach i upływie terminu

Kolejka według stanu z 28.09.2026

Cotygodniowy raport z 28.09.2026 w serwisie make.wordpress.org/updates podaje 4598 wtyczek w kolejce. Tylko 30 z nich to nowe, nieobsłużone zgłoszenia, 3860 czeka na autorów, 475 na recenzenta, a 233 oznaczono jako czekające na recenzenta z niewysłaną jeszcze wiadomością. 07.09.2026 w kolejce były 4893 wtyczki, w tym 160 nowych i nieobsłużonych.

Raporty nie podają czasu oczekiwania. Niewielka liczba nieobsłużonych zgłoszeń wskazuje, że pierwszy przegląd następuje obecnie wkrótce po przesłaniu, ale to interpretacja. Oficjalne ramy czasowe są różne: strona zgłoszeń mówi o okresie od jednego do dziesięciu dni z celem pięciu dni roboczych, a FAQ zakłada zatwierdzenie małej, poprawnej wtyczki w ciągu czternastu dni od pierwszego przeglądu. Zmienność sytuacji pokazuje raport z czerwca 2026: około 1050 wtyczek w połowie kwietnia, niemal zero kilka tygodni później i rekordowe około 700 zgłoszeń tygodniowo w maju.

Ograniczenia i otwarte kwestie

Nie ma oficjalnych danych o tym, która wytyczna najczęściej prowadzi do odrzucenia; grupowanie nie jest rankingiem. Dane o kolejce opisują stan, a nie czas oczekiwania, a większość pozycji czeka na autorów, nie na recenzentów. Dane z czerwca i września prawdopodobnie liczą różne rzeczy, a starsza strona podręcznika z 2022 roku wciąż mówi o czternastu dniach roboczych.

Ogłoszenie nie wyjaśnia, czy sześciogodzinne oczekiwanie obejmuje także pierwsze wydanie świeżo zatwierdzonej wtyczki. Kontrola wstępna z Plugin Check jest opisana tak, jak ogłoszono ją w październiku 2024; jej zakres mógł się zmienić. Wytyczne są regularnie aktualizowane, dlatego tuż przed zgłoszeniem warto przeczytać je ponownie. Przykładowa wtyczka przechodzi WordPress Coding Standards bez zgłoszeń; Plugin Check 2.1.0 w WordPressie 7.1.2 zgłasza jedynie brak readme.txt (no_plugin_readme), a z kompletnym plikiem readme zawierającym pokazaną sekcję nie zgłasza niczego, łącznie z testami uruchomieniowymi.

Pytania i odpowiedzi

Czy wtyczka w katalogu może reklamować płatną wersję Pro?

Tak, w pewnych granicach. Wytyczna 11 dopuszcza komunikaty o wersji rozszerzonej, jeśli pasują do kontekstu lub są ograniczone do strony ustawień wtyczki; komunikaty widoczne w całym panelu muszą dać się zamknąć. Sama bezpłatna wtyczka musi pozostać kompletna (wytyczna 5), nie może sugerować, że zawarte w niej funkcje wymagają zapłaty (wytyczna 9), i nie może sama pobierać ani instalować wersji premium (wytyczna 8).

Czy slug da się zmienić po zatwierdzeniu wtyczki?

Nie. Według FAQ dla twórców slug da się zmienić raz po zgłoszeniu, a po zatwierdzeniu już wcale. Wyświetlana nazwa z nagłówka Plugin Name może zmieniać się także później. Nazwa wybrana przed przesłaniem pliku decyduje więc o stałym adresie w katalogu i w SVN.

Czy bezbłędny wynik Plugin Check oznacza, że wtyczka zostanie zatwierdzona?

Nie. Przy zgłoszeniu uruchamiana jest tylko kategoria „Plugin Repo”, a zgłoszenie blokują wyłącznie wyniki na poziomie błędu. Potem następuje ręczny przegląd bezpieczeństwa, zgodności, wytycznych i prezentacji. Kilka wytycznych dotyczy kwestii, które automatyczna kontrola ocenia tylko częściowo, na przykład modelu biznesowego, zgody przed zapytaniami zewnętrznymi czy znaków towarowych w nazwie.

Co dzieje się ze zgłoszeniem, gdy wiadomość z przeglądu pozostaje bez odpowiedzi?

Jeśli przegląd nie zostanie zakończony w ciągu trzech miesięcy, zgłoszenie jest odrzucane. Aby kontynuować, należy zgłosić wtyczkę ponownie i odpowiedzieć na starą wiadomość. Skalę zjawiska pokazuje raport roczny za 2025 rok: w przypadku 38,7 procent sprawdzonych wtyczek autorzy nie odpowiedzieli.

Źródła

Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Napisanie komentarza

Doświadczenia z innymi wtyczkami lub środowiskami hostingowymi oraz pytania o konfigurację są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.

ALL ARTICLES & CATEGORIES

CCTV

Śledź tę kategorię przez RSS

Cloud & AI

Śledź tę kategorię przez RSS

Data Privacy

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Digital Analytics

Wszystkie artykuły w tej kategorii (56) Śledź tę kategorię przez RSS

Digital Marketing

Wszystkie artykuły w tej kategorii (37) Śledź tę kategorię przez RSS

IT & Networks

Wszystkie artykuły w tej kategorii (17) Śledź tę kategorię przez RSS

Music Production

Wszystkie artykuły w tej kategorii (15) Śledź tę kategorię przez RSS

Raspberry Pi

Śledź tę kategorię przez RSS

Smart Home

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Tworzenie stron internetowych

Wszystkie artykuły w tej kategorii (11) Śledź tę kategorię przez RSS

Wtyczki i triki WordPress

Wszystkie artykuły w tej kategorii (12) Śledź tę kategorię przez RSS