{"id":21044,"date":"2026-10-02T23:18:42","date_gmt":"2026-10-02T21:18:42","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=21044"},"modified":"2026-10-02T23:19:05","modified_gmt":"2026-10-02T21:19:05","slug":"stats4u-wordpress-plugin-funktionsweise","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/","title":{"rendered":"So funktioniert das WordPress-Plugin Stats4U: Z\u00e4hlercode, Platzierung, Einwilligung und Anfragen"},"content":{"rendered":"<p>Stats4U ist ein Besucherz\u00e4hler von LW IT Solutions: ein kleines Bild auf der Website, das Seitenaufrufe z\u00e4hlt, dazu eine Statistik auf <a href=\"https:\/\/www.stats4u.net\/\">stats4u.net<\/a> mit Herkunft der Besucher, Verweildauer, Scrolltiefe und den Besuchern, die gerade online sind. Ein Konto braucht es nicht, die Z\u00e4hlernummer gen\u00fcgt. F\u00fcr WordPress gibt es dazu ein eigenes Plugin. Es steht seit dem 29.09.2026 im <a href=\"https:\/\/wordpress.org\/plugins\/stats4u\/\">Plugin-Verzeichnis von WordPress.org<\/a>, in Version 1.6.0, und sein Quelltext liegt \u00f6ffentlich auf <a href=\"https:\/\/github.com\/LW-IT-Solutions\/Stats4U-Wordpress\">GitHub<\/a>.<\/p>\n<p>Dieser Beitrag zeigt, wie das Plugin arbeitet: wie es einen eingef\u00fcgten Z\u00e4hlercode liest, wie es den Z\u00e4hler hinter den Seitenfu\u00df eines beliebigen Themes setzt, wie es auf ein Einwilligungswerkzeug wartet und was der Browser danach an stats4u.net schickt. Alles ist auf einer lokalen Testinstallation mit WordPress 7.1.2, PHP 8.4 und Twenty Twenty-Five am 02.10.2026 nachgemessen, mit dem Plugin aus dem Verzeichnis. Am Ende stehen der Weg durch das Review von WordPress.org und alle Links.<\/p>\n<h2>Vom eingef\u00fcgten Code zum Z\u00e4hler<\/h2>\n<p>Unter \u201eEinstellungen \u2192 Stats4U\u201c f\u00fchrt ein Assistent in f\u00fcnf Schritten durch die Einrichtung: Z\u00e4hler, Aussehen, Platzierung, Einwilligung, fertig. Wer alles auf einer Seite haben will, w\u00e4hlt stattdessen die eigene Konfiguration. Im ersten Schritt kommt der Code hinein, den der Generator auf stats4u.net ausgibt. Daf\u00fcr gibt es drei Wege: ein vorhandener Code, ein Knopf, der den Generator \u00f6ffnet und den Code am Ende zur\u00fcckbringt, oder eine neue Z\u00e4hlernummer auf Anfrage. Die beiden letzten Wege laufen aus dem Browser der Administratorin oder des Administrators, nicht vom Server.<\/p>\n<p>Der Generator kennt mehrere Formate, und das Plugin nimmt sie alle an. Die Tabelle zeigt, was <code>stats4u_code_lesen()<\/code> aus zw\u00f6lf Eingaben gemacht hat:<\/p>\n<table>\n<thead>\n<tr>\n<th>Eingef\u00fcgt<\/th>\n<th>Ergebnis<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>HTML, Bild mit Link<\/td>\n<td>Nummer, Entwurf, dunkler Modus und Gr\u00f6\u00dfe 150 %<\/td>\n<\/tr>\n<tr>\n<td>BBCode<\/td>\n<td>Nummer, Entwurf, dunkler Modus<\/td>\n<\/tr>\n<tr>\n<td>Markdown<\/td>\n<td>Nummer, Entwurf, Sprache Deutsch<\/td>\n<\/tr>\n<tr>\n<td>Skript-Code mit <code>s4u.js<\/code><\/td>\n<td>Nummer, Entwurf, dunkler Modus, Z\u00e4hlweise \u201eeinmalige Besucher\u201c, Sprache Polnisch<\/td>\n<\/tr>\n<tr>\n<td>Bildadresse allein<\/td>\n<td>Nummer und Entwurf<\/td>\n<\/tr>\n<tr>\n<td>alte Langform <code>?action=pic&amp;s4uid=\u2026<\/code><\/td>\n<td>Nummer und Entwurf<\/td>\n<\/tr>\n<tr>\n<td>nur die Nummer, auch mit <code>#<\/code><\/td>\n<td>Nummer, Entwurf bleibt<\/td>\n<\/tr>\n<tr>\n<td>Adresse der Statistikseite <code>\/live\/&lt;Nummer&gt;<\/code><\/td>\n<td>Nummer<\/td>\n<\/tr>\n<tr>\n<td>Statistikseite mit eigenem Namen<\/td>\n<td>Hinweis: Code oder Nummer einf\u00fcgen<\/td>\n<\/tr>\n<tr>\n<td>Globus-Widget <code>globe.js<\/code><\/td>\n<td>Hinweis: das Plugin zeigt Bildz\u00e4hler<\/td>\n<\/tr>\n<tr>\n<td>beliebiger Text<\/td>\n<td>Hinweis: Code nicht erkannt<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Auf der Seite steht danach nicht mehr das Bild allein, sondern das offizielle Skript des Dienstes, dasselbe <code>&lt;script src=\"https:\/\/www.stats4u.net\/s4u.js\" data-id=\"\u2026\" async&gt;<\/code>, das der Generator ausgibt. Bis Version 1.4.0 setzte das Plugin nur das Bild. Das war leichter, aber ein Browser schickt mit einem Bild von einem fremden Server nur die Domain der Website mit, nicht die Seite und nicht die Herkunft des Besuchers. Erst das Skript liefert diese Angaben und dazu Verweildauer, Scrolltiefe und \u201ejetzt online\u201c. Welche Form am Platz des Z\u00e4hlers steht, entscheidet eine einzige Funktion:<\/p>\n<pre><code>\/\/ stats4u.php (excerpt)\nfunction stats4u_zaehler_teile($e) {\n    $daten = stats4u_skript_daten($e);\n    if (stats4u_cmp($e) === null) {\n        return array('skript' =&gt; array('src' =&gt; STATS4U_SKRIPT, 'async' =&gt; true) + $daten);\n    }\n    stats4u_wartet(true);\n    return array('platzhalter' =&gt; $daten);\n}\n\nfunction stats4u_html() {\n    $e = stats4u_einstellungen();\n    if ($e['id'] === '') { return ''; }\n    $t = stats4u_zaehler_teile($e);\n    if (isset($t['skript'])) {\n        return '&lt;span class=\"stats4u-zaehler\"&gt;' . trim(wp_get_script_tag($t['skript'])) . '&lt;\/span&gt;';\n    }\n    return '&lt;span class=\"stats4u-zaehler\" data-stats4u=\"' . esc_attr(wp_json_encode($t['platzhalter'])) . '\"&gt;&lt;\/span&gt;';\n}<\/code><\/pre>\n<p>Ohne Einwilligungswerkzeug ist das ein Skript-Tag, gebaut mit <code>wp_get_script_tag()<\/code>, das jedes Attribut maskiert. Mit einem Werkzeug ist es ein leerer Platzhalter, der die Angaben des Z\u00e4hlers als JSON tr\u00e4gt. Dazu sp\u00e4ter mehr.<\/p>\n<h2>Hinter dem Seitenfu\u00df jedes Themes<\/h2>\n<p>Ab Werk erscheint der Z\u00e4hler direkt unter dem Seitenfu\u00df des Themes. Das klingt einfach, aber WordPress kennt keine Stelle \u201enach dem Fu\u00df\u201c. Der \u00fcbliche Haken <code>wp_footer<\/code> liegt kurz vor <code>&lt;\/body&gt;<\/code>. Bis Version 1.3.0 hing der Z\u00e4hler dort, und auf einer Seite, deren <code>body<\/code> als Flexbox angelegt ist, stand er dann als Spalte neben dem Inhalt, auf halber H\u00f6he. Seit 1.3.1 puffert das Plugin die Ausgabe ab dem Ende von <code>wp_head<\/code>, sucht im Puffer den Seitenfu\u00df und setzt den Z\u00e4hler dahinter. Als Seitenfu\u00df gilt ein Element, das sich als solcher ausweist:<\/p>\n<pre><code>\/\/ stats4u.php (excerpt)\nfunction stats4u_ist_seitenfuss($name, $tag) {\n    if (preg_match('\/(?&lt;![\\w-])role\\s*=\\s*[\"\\']?contentinfo\\b\/i', $tag)) { return true; }\n    if (preg_match('\/(?&lt;![\\w-])itemtype\\s*=\\s*[\"\\']?[^\"\\'&gt;]*WPFooter\/i', $tag)) { return true; }\n    $namen = array('colophon', 'footer', 'site-footer', 'main-footer', 'page-footer', 'global-footer',\n                   'elementor-location-footer');\n    if ($name === 'footer') { $namen[] = 'wp-block-template-part'; }\n    foreach (array('id', 'class') as $attr) {\n        if (preg_match('\/(?&lt;![\\w-])' . $attr . '\\s*=\\s*(?:\"([^\"]*)\"|\\'([^\\']*)\\'|([^\\s&gt;]+))\/i', $tag, $m)) {\n            $wert = strtolower(($m[1] ?? '') . ($m[2] ?? '') . ($m[3] ?? ''));\n            if (array_intersect(preg_split('\/\\s+\/', trim($wert)), $namen)) { return true; }\n        }\n    }\n    return false;\n}<\/code><\/pre>\n<p>Unter mehreren Kandidaten gewinnt der letzte \u00e4u\u00dferste, damit der Z\u00e4hler bei Themes, die ein <code>&lt;footer&gt;<\/code> in einen weiteren Fu\u00dfbereich stecken, unter dem ganzen Balken steht. Fehlt ein erkennbarer Fu\u00df, kommt der Z\u00e4hler ans Ende der Seite. Bis das Skript das Bild gezeichnet hat, blendet eine CSS-Regel mit <code>:has()<\/code> den leeren Kasten aus, damit kein Rand als L\u00fccke stehen bleibt. Seit Version 1.6.0 \u00fcbernimmt diese Arbeit der R\u00fcckruf des Ausgabepuffers; das Plugin gibt die gepufferte Seite nicht mehr selbst aus. Diese \u00c4nderung kam aus dem Review von WordPress.org.<\/p>\n<p>Auf der Testinstallation landete der Z\u00e4hler bei jeder Einstellung an der beschriebenen Stelle. \u201eUnter dem Fu\u00df\u201c setzte ihn direkt hinter <code>&lt;\/footer&gt;<\/code>, \u201eim Fu\u00df\u201c davor, \u201eam Ende der Seite\u201c vor die Skripte am Schluss. \u201eUnter dem Inhalt\u201c setzte ihn nur auf Einzelseiten, nicht auf der Startseite. Die Ecken setzten ihn fest unten rechts oder links, und \u201enirgends automatisch\u201c lie\u00df ihn weg. F\u00fcr eigene Pl\u00e4tze gibt es den Block \u201eStats4U counter\u201c und den Shortcode <code><span class=\"stats4u-zaehler\" data-stats4u=\"{&quot;data-id&quot;:&quot;4189938433&quot;,&quot;data-style&quot;:&quot;950&quot;,&quot;data-params&quot;:&quot;form=pill&amp;pal=ocean&amp;dark=auto&quot;,&quot;data-lang&quot;:&quot;en&quot;}\"><\/span><\/code>, in einer Vorlage als <code>do_shortcode( '<span class=\"stats4u-zaehler\" data-stats4u=\"{&quot;data-id&quot;:&quot;4189938433&quot;,&quot;data-style&quot;:&quot;950&quot;,&quot;data-params&quot;:&quot;form=pill&amp;pal=ocean&amp;dark=auto&quot;,&quot;data-lang&quot;:&quot;en&quot;}\"><\/span>' )<\/code>. Block und Shortcode auf derselben Seite ergaben zwei Z\u00e4hler, der Block mit seiner eigenen Ausrichtung.<\/p>\n<h2>Erst nach der Einwilligung<\/h2>\n<p>Wer ein Einwilligungswerkzeug nutzt, w\u00e4hlt es im vierten Schritt aus. Zur Wahl stehen 27 Eintr\u00e4ge: 25 Werkzeuge, CookieYes zus\u00e4tzlich im alten Modus und die WP Consent API, dazu jedes Werkzeug, das Skripte \u00fcber eigene Attribute sperrt. Am Platz des Z\u00e4hlers steht dann ein leerer <code>span<\/code> mit den Angaben in <code>data-stats4u<\/code>. Am Ende der Seite steht ein kleines Freigabeskript, das das Werkzeug erst nach der Einwilligung ausf\u00fchrt und das dann in jeden Platzhalter das offizielle <code>s4u.js<\/code> setzt. Gemessen sah das so aus:<\/p>\n<table>\n<thead>\n<tr>\n<th>Werkzeug<\/th>\n<th>Freigabeskript im HTML<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Complianz<\/td>\n<td><code>&lt;script type=\"text\/plain\" data-category=\"statistics\"&gt;<\/code><\/td>\n<\/tr>\n<tr>\n<td>Cookiebot<\/td>\n<td><code>&lt;script type=\"text\/plain\" data-cookieconsent=\"statistics\"&gt;<\/code><\/td>\n<\/tr>\n<tr>\n<td>consented.eu<\/td>\n<td><code>&lt;script type=\"text\/plain\" data-consented=\"stats4u\"&gt;<\/code><\/td>\n<\/tr>\n<tr>\n<td>CookieYes<\/td>\n<td><code>&lt;script data-cookieyes=\"cookieyes-analytics\" src=\"\u2026\/freigabe.js\"&gt;<\/code><\/td>\n<\/tr>\n<tr>\n<td>WP Consent API<\/td>\n<td>Inline-Skript, das <code>wp_has_consent()<\/code> fragt und auf \u00c4nderungen h\u00f6rt<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In keinem dieser F\u00e4lle stand <code>s4u.js<\/code> direkt im HTML. F\u00fcr Werkzeuge, die nur Skripte mit eigener Adresse freigeben, wie CookieYes, bindet das Plugin die Datei <code>freigabe.js<\/code> ein. Bei der WP Consent API pr\u00fcft das Skript zuerst, ob \u00fcberhaupt ein Einwilligungstyp gesetzt ist, weil <code>wp_has_consent()<\/code> ohne Typ auch nach einer Ablehnung <code>true<\/code> liefert. F\u00fcr ein Werkzeug, das nicht in der Liste steht, lassen sich eigene Attribute eintragen. Dabei kommen nur <code>type<\/code>, <code>class<\/code> und <code>data-*<\/code> durch:<\/p>\n<pre><code>\/\/ stats4u.php (excerpt)\nfunction stats4u_eigene_attribute($roh) {\n    $aus = array('type' =&gt; 'text\/plain');\n    if (preg_match_all('\/([a-zA-Z][a-zA-Z0-9_.:-]*)\\s*=\\s*(?:\"([^\"]*)\"|\\'([^\\']*)\\'|([^\\s\"\\'&gt;]+))\/', (string) $roh, $m, PREG_SET_ORDER)) {\n        foreach ($m as $a) {\n            $name = strtolower($a[1]);\n            if (!preg_match('\/^(data-[a-z0-9_.:-]+|class|type)$\/', $name)) { continue; }\n            $wert = $a[2] !== '' ? $a[2] : ((isset($a[3]) &amp;&amp; $a[3] !== '') ? $a[3] : ($a[4] ?? ''));\n            $aus[$name] = substr(preg_replace('\/[^A-Za-z0-9 _.:\\\/,#-]\/', '', $wert), 0, 80);\n        }\n    }\n    return $aus;\n}<\/code><\/pre>\n<p>Ein eingetragenes <code>onload=\"alert(1)\"<\/code> fehlte in der Ausgabe; \u00fcbrig blieben <code>type=\"text\/plain\"<\/code> und <code>data-category=\"statistics\"<\/code>.<\/p>\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/wp-stats4u-plugin-de.png?v=20261002\" width=\"1120\" height=\"580\" alt=\"Vom eingef\u00fcgten Code zum gez\u00e4hlten Besuch\"><figcaption>Das Plugin Stats4U setzt das offizielle Z\u00e4hlerskript an die gew\u00e4hlte Stelle; gez\u00e4hlt wird im Browser, der WordPress-Server ruft stats4u.net nie auf<\/figcaption><\/figure>\n<h2>Was der Browser an stats4u.net schickt<\/h2>\n<p>F\u00fcr diese Messung lief ein Chrome mit frischem Profil, in dem jede Anfrage angehalten wurde. Nur die Skriptdatei <code>s4u.js<\/code> selbst durfte geladen werden. Jede andere Anfrage an stats4u.net wurde mitgeschrieben und dann abgebrochen, damit keine Testz\u00e4hlung beim Dienst ankam. Die Seite blieb 70 Sekunden offen, danach wurde wegnavigiert.<\/p>\n<table>\n<thead>\n<tr>\n<th>Zeitpunkt<\/th>\n<th>Anfrage<\/th>\n<th>Inhalt<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>beim Laden<\/td>\n<td><code>s4u.js<\/code><\/td>\n<td>13.237 Bytes \u00fcbertragen, mit Brotli, eine Stunde im Cache, kein <code>Set-Cookie<\/code><\/td>\n<\/tr>\n<tr>\n<td>beim Laden<\/td>\n<td><code>action=cfg<\/code>, GET<\/td>\n<td>nur die Z\u00e4hlernummer: Einstellungen des Z\u00e4hlers<\/td>\n<\/tr>\n<tr>\n<td>beim Laden<\/td>\n<td><code>action=pic<\/code>, Bild<\/td>\n<td>Z\u00e4hlernummer, Entwurf, dunkler Modus, Sprache, Seitenadresse, Herkunft und eine Zufallszahl gegen Caches; diese Anfrage z\u00e4hlt<\/td>\n<\/tr>\n<tr>\n<td>nach 60 s<\/td>\n<td><code>action=ping<\/code>, POST<\/td>\n<td>nur die Z\u00e4hlernummer, f\u00fcr \u201ejetzt online\u201c<\/td>\n<\/tr>\n<tr>\n<td>beim Verlassen<\/td>\n<td><code>action=puls<\/code>, Beacon<\/td>\n<td>Z\u00e4hlernummer, Seitenadresse, sichtbare Sekunden, Scrolltiefe und Ladezeit<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Nach dem Laden standen im Browser keine Cookies und nichts im lokalen Speicher. Das Skript machte den Z\u00e4hler zu einem Link auf seine Statistikseite, <code>https:\/\/www.stats4u.net\/live\/&lt;Nummer&gt;<\/code>. Diesen Link setzt der Dienst, nicht das Plugin; ein Z\u00e4hler, der auf stats4u.net als nicht \u00f6ffentlich eingestellt ist, verweist auf die Startseite des Dienstes. Der WordPress-Server selbst ruft stats4u.net nie auf: Im Code des Plugins steht kein einziger HTTP-Aufruf. Die Vorschau auf der Einstellungsseite und im Editor tr\u00e4gt den Parameter <code>rl=1<\/code> und z\u00e4hlt nicht.<\/p>\n<h2>Mehrsprachig und ohne Neuaufbau<\/h2>\n<p>Steht die Sprache des Z\u00e4hlers auf \u201ewie die Seite\u201c, setzt das Plugin sie je Aufruf aus dem Gebietsschema. Mit Polylang trug der Z\u00e4hler auf der englischen Startseite <code>data-lang=\"en\"<\/code>, auf der deutschen <code>de<\/code> und auf der polnischen <code>pl<\/code>. Themes, die Seiten ohne Neuaufbau wechseln, z\u00e4hlen ohne Hilfe nur die erste Seite. F\u00fcr sie gibt es das Ereignis <code>s4u:seiteweg<\/code>, das die Verweildauer der alten Seite abschlie\u00dft, und nach einer Einwilligung die Funktion <code>window.stats4uAn()<\/code>, die neue Platzhalter f\u00fcllt. Diese Website nutzt genau diesen Weg. Auf ihr l\u00e4uft Stats4U 1.6.0 mit consented.eu, und ihr Seitenwechsel ohne Neuaufbau l\u00f6st vor jedem Tausch <code>s4u:seiteweg<\/code> aus.<\/p>\n<h2>Durch das Review von WordPress.org<\/h2>\n<p>Die erste Einreichung wurde am 26.09.2026 zur\u00fcckgestellt. Das Review-Team verlangte, jeden Wert erst bei der Ausgabe zu maskieren, auch bei HTML, das eine Funktion zur\u00fcckgibt, und keine \u00dcbersetzungsdateien im Paket mitzuliefern. Version 1.6.0 setzt das um. Jede Ausgabe l\u00e4uft \u00fcber <code>esc_html()<\/code>, <code>esc_attr()<\/code>, <code>esc_url()<\/code>, <code>wp_kses()<\/code> oder <code>wp_print_script_tag()<\/code>, und den Z\u00e4hler hinter den Seitenfu\u00df setzt der R\u00fcckruf des Ausgabepuffers. Die 18 \u00dcbersetzungen, die bis 1.5.0 im Paket lagen, liegen jetzt als Vorlage im GitHub-Repository; \u00fcbersetzt wird auf <a href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/stats4u\/\">translate.wordpress.org<\/a>, und WordPress l\u00e4dt die Sprachpakete von selbst. Am 29.09.2026 gab das Review-Team Stats4U frei.<\/p>\n<p>Beim L\u00f6schen entfernt das Plugin seine Option und die gemerkte Ansicht der Einstellungsseite. Gemessen: Option mit 236 Bytes und Ansicht vorher vorhanden, danach beide weg. Der Z\u00e4hler auf stats4u.net und seine Statistik bleiben bestehen.<\/p>\n<h2>Alle Links<\/h2>\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/stats4u\/\">Stats4U im Plugin-Verzeichnis von WordPress.org<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/LW-IT-Solutions\/Stats4U-Wordpress\">Quelltext auf GitHub<\/a>, mit README und den \u00dcbersetzungsvorlagen<\/li>\n<li><a href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/stats4u\/\">\u00dcbersetzung auf translate.wordpress.org<\/a><\/li>\n<li><a href=\"https:\/\/www.stats4u.net\/\">stats4u.net<\/a>, mit dem Generator f\u00fcr neue Z\u00e4hler<\/li>\n<li><a href=\"https:\/\/www.stats4u.net\/privacy-embed\">Textbaustein f\u00fcr die eigene Datenschutzerkl\u00e4rung<\/a>, je Z\u00e4hlernummer und in 19 Sprachen<\/li>\n<li><a href=\"https:\/\/www.stats4u.net\/terms\">Nutzungsbedingungen<\/a> und <a href=\"https:\/\/www.stats4u.net\/privacy\">Datenschutzerkl\u00e4rung<\/a> von Stats4U<\/li>\n<\/ul>\n<div class=\"lw-faq\">\n<h2>Fragen und Antworten<\/h2>\n<h3>Setzt Stats4U ein Cookie?<\/h3>\n<p>Nein. In der Messung mit frischem Browserprofil stand nach dem Laden kein Cookie im Browser und nichts im lokalen Speicher, und die Antwort mit <code>s4u.js<\/code> trug kein <code>Set-Cookie<\/code>. Wie bei jeder Anfrage an einen anderen Server gehen IP-Adresse und User-Agent des Browsers an stats4u.net. Einen Textvorschlag f\u00fcr die Datenschutzerkl\u00e4rung gibt es unter stats4u.net\/privacy-embed.<\/p>\n<h3>Was passiert, wenn stats4u.net nicht erreichbar ist?<\/h3>\n<p>Dann fehlt der Z\u00e4hler auf der Seite, sonst nichts. Das Skript l\u00e4dt asynchron und h\u00e4lt die Seite nicht auf. Bis es ein Bild gezeichnet hat, blendet eine CSS-Regel den leeren Kasten aus, damit keine L\u00fccke stehen bleibt.<\/p>\n<h3>Z\u00e4hlen Besuche in der Vorschau oder im Editor mit?<\/h3>\n<p>Nein. Die Vorschau auf der Einstellungsseite und im Block-Editor l\u00e4dt nur das Z\u00e4hlerbild mit dem Parameter <code>rl=1<\/code>, der \u201enur anzeigen\u201c bedeutet. Bis Version 1.1.0 z\u00e4hlte jeder Blick auf die Einstellungsseite als Besuch; das ist behoben.<\/p>\n<h3>L\u00f6scht das Entfernen des Plugins auch den Z\u00e4hler?<\/h3>\n<p>Nein. Beim L\u00f6schen entfernt das Plugin seine Option und die gemerkte Ansicht der Einstellungsseite, sonst nichts. Der Z\u00e4hler auf stats4u.net geh\u00f6rt dem Betreiber der Website und beh\u00e4lt seine Statistik.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>Quellen<\/h2>\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/stats4u\/\" target=\"_blank\" rel=\"noopener noreferrer\">Stats4U 1.6.0 im Plugin-Verzeichnis<\/a>, abgerufen am 02.10.2026<\/li>\n<li><a href=\"https:\/\/github.com\/LW-IT-Solutions\/Stats4U-Wordpress\" target=\"_blank\" rel=\"noopener noreferrer\">Stats4U-Wordpress, Quelltext auf GitHub<\/a>, abgerufen am 02.10.2026<\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/plugins\/wordpress-org\/detailed-plugin-guidelines\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress.org: Detailed Plugin Guidelines<\/a>, abgerufen am 02.10.2026<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-consent-api\/\" target=\"_blank\" rel=\"noopener noreferrer\">WP Consent API<\/a>, abgerufen am 02.10.2026<\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_get_script_tag\/\" target=\"_blank\" rel=\"noopener noreferrer\">wp_get_script_tag()<\/a>, abgerufen am 02.10.2026<\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_print_inline_script_tag\/\" target=\"_blank\" rel=\"noopener noreferrer\">wp_print_inline_script_tag()<\/a>, abgerufen am 02.10.2026<\/li>\n<li><a href=\"https:\/\/www.php.net\/manual\/en\/function.ob-start.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP: ob_start()<\/a>, abgerufen am 02.10.2026<\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Navigator\/sendBeacon\" target=\"_blank\" rel=\"noopener noreferrer\">MDN: Navigator.sendBeacon()<\/a>, abgerufen am 02.10.2026<\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/:has\" target=\"_blank\" rel=\"noopener noreferrer\">MDN: :has()<\/a>, abgerufen am 02.10.2026<\/li>\n<li><a href=\"https:\/\/www.stats4u.net\/privacy-embed\" target=\"_blank\" rel=\"noopener noreferrer\">Stats4U: Text f\u00fcr die Datenschutzerkl\u00e4rung<\/a>, abgerufen am 02.10.2026<\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Stats4U steht seit dem 29.09.2026 im Plugin-Verzeichnis von WordPress.org. Nachgemessen: wie es den Z\u00e4hlercode liest, den Z\u00e4hler unter jeden Seitenfu\u00df setzt, auf die Einwilligung wartet und was der Browser sendet.<\/p>\n","protected":false},"author":1,"featured_media":21050,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[92139,92265,92268,92110,92277],"class_list":["post-21044","post","type-post","status-publish","format-standard","hentry","category-wordpress-plugins-tricks-de","tag-consent-management-de","tag-prywatnosc-danych-pl-de","tag-javascript-de","tag-web-analytics-de","tag-wordpress-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>So funktioniert das WordPress-Plugin Stats4U: Z\u00e4hlercode, Platzierung, Einwilligung und Anfragen | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Wie das Plugin Stats4U Z\u00e4hlercodes liest, den Z\u00e4hler unter jeden Seitenfu\u00df setzt, auf Einwilligung wartet und was der Browser sendet. Mit allen Links.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"So funktioniert das WordPress-Plugin Stats4U: Z\u00e4hlercode, Platzierung, Einwilligung und Anfragen | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Wie das Plugin Stats4U Z\u00e4hlercodes liest, den Z\u00e4hler unter jeden Seitenfu\u00df setzt, auf Einwilligung wartet und was der Browser sendet. Mit allen Links.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-02T21:19:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/fi-21044-stats4u-wordpress-plugin-funktionsweise-b.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/stats4u-wordpress-plugin-funktionsweise\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/stats4u-wordpress-plugin-funktionsweise\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"So funktioniert das WordPress-Plugin Stats4U: Z\u00e4hlercode, Platzierung, Einwilligung und Anfragen\",\"datePublished\":\"-0001-11-30T00:00:00+00:00\",\"dateModified\":\"2026-10-02T21:19:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/stats4u-wordpress-plugin-funktionsweise\\\/\"},\"wordCount\":1749,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/stats4u-wordpress-plugin-funktionsweise\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/fi-21044-stats4u-wordpress-plugin-funktionsweise-b.png\",\"keywords\":[\"Consent Management\",\"Data Privacy\",\"JavaScript\",\"Web Analytics\",\"WordPress\"],\"articleSection\":[\"WordPress-Plugins &amp; Tricks\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/stats4u-wordpress-plugin-funktionsweise\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/stats4u-wordpress-plugin-funktionsweise\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/stats4u-wordpress-plugin-funktionsweise\\\/\",\"name\":\"So funktioniert das WordPress-Plugin Stats4U: Z\u00e4hlercode, Platzierung, Einwilligung und Anfragen | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/stats4u-wordpress-plugin-funktionsweise\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/stats4u-wordpress-plugin-funktionsweise\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/fi-21044-stats4u-wordpress-plugin-funktionsweise-b.png\",\"datePublished\":\"-0001-11-30T00:00:00+00:00\",\"dateModified\":\"2026-10-02T21:19:05+00:00\",\"description\":\"Wie das Plugin Stats4U Z\u00e4hlercodes liest, den Z\u00e4hler unter jeden Seitenfu\u00df setzt, auf Einwilligung wartet und was der Browser sendet. Mit allen Links.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/stats4u-wordpress-plugin-funktionsweise\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/stats4u-wordpress-plugin-funktionsweise\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/stats4u-wordpress-plugin-funktionsweise\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/fi-21044-stats4u-wordpress-plugin-funktionsweise-b.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/fi-21044-stats4u-wordpress-plugin-funktionsweise-b.png\",\"width\":1200,\"height\":630,\"caption\":\"So funktioniert das WordPress-Plugin Stats4U: Z\u00e4hlercode, Platzierung, Einwilligung und Anfragen\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/stats4u-wordpress-plugin-funktionsweise\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"So funktioniert das WordPress-Plugin Stats4U: Z\u00e4hlercode, Platzierung, Einwilligung und Anfragen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"So funktioniert das WordPress-Plugin Stats4U: Z\u00e4hlercode, Platzierung, Einwilligung und Anfragen | Lukas Wojcik","description":"Wie das Plugin Stats4U Z\u00e4hlercodes liest, den Z\u00e4hler unter jeden Seitenfu\u00df setzt, auf Einwilligung wartet und was der Browser sendet. Mit allen Links.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/","og_locale":"en_US","og_type":"article","og_title":"So funktioniert das WordPress-Plugin Stats4U: Z\u00e4hlercode, Platzierung, Einwilligung und Anfragen | Lukas Wojcik","og_description":"Wie das Plugin Stats4U Z\u00e4hlercodes liest, den Z\u00e4hler unter jeden Seitenfu\u00df setzt, auf Einwilligung wartet und was der Browser sendet. Mit allen Links.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"-0001-11-30T00:00:00+00:00","article_modified_time":"2026-10-02T21:19:05+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/fi-21044-stats4u-wordpress-plugin-funktionsweise-b.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"So funktioniert das WordPress-Plugin Stats4U: Z\u00e4hlercode, Platzierung, Einwilligung und Anfragen","datePublished":"-0001-11-30T00:00:00+00:00","dateModified":"2026-10-02T21:19:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/"},"wordCount":1749,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/fi-21044-stats4u-wordpress-plugin-funktionsweise-b.png","keywords":["Consent Management","Data Privacy","JavaScript","Web Analytics","WordPress"],"articleSection":["WordPress-Plugins &amp; Tricks"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/","name":"So funktioniert das WordPress-Plugin Stats4U: Z\u00e4hlercode, Platzierung, Einwilligung und Anfragen | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/fi-21044-stats4u-wordpress-plugin-funktionsweise-b.png","datePublished":"-0001-11-30T00:00:00+00:00","dateModified":"2026-10-02T21:19:05+00:00","description":"Wie das Plugin Stats4U Z\u00e4hlercodes liest, den Z\u00e4hler unter jeden Seitenfu\u00df setzt, auf Einwilligung wartet und was der Browser sendet. Mit allen Links.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/fi-21044-stats4u-wordpress-plugin-funktionsweise-b.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/fi-21044-stats4u-wordpress-plugin-funktionsweise-b.png","width":1200,"height":630,"caption":"So funktioniert das WordPress-Plugin Stats4U: Z\u00e4hlercode, Platzierung, Einwilligung und Anfragen"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/stats4u-wordpress-plugin-funktionsweise\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"So funktioniert das WordPress-Plugin Stats4U: Z\u00e4hlercode, Platzierung, Einwilligung und Anfragen"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/21044","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=21044"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/21044\/revisions"}],"predecessor-version":[{"id":21059,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/21044\/revisions\/21059"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/21050"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=21044"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=21044"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=21044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}