
🔄 WooCommerce zuletzt angesehene produkte shortcode: fertiger code und einrichtung
Ein Besucher betritt den Shop, sieht sich fünf Produkte an, schließt den Tab und hat die Seite eine Minute später vergessen. Dieses Bild kennt jeder WooCommerce-Betreiber. Ein Block „Zuletzt angesehen" löst dieses Problem: Ein Klick auf eine vertraute Karte holt den Besucher zurück in den Kaufprozess.
WooCommerce schreibt von Haus aus die IDs der angesehenen Produkte in das Cookie woocommerce_recently_viewed. Diese Daten liegen bereits auf Ihrem Shop-Server, ein separates Tracking-Plugin ist nicht nötig. Es bleibt nur, das Cookie auszulesen und die Produkte anzuzeigen. Nachfolgend ein fertiger Shortcode, der das in 30 Zeilen modernem PHP erledigt.
💡 Kurzüberblick:
- Verstehen, wie WooCommerce Aufrufe in einem Cookie speichert, ein kurzer Absatz Theorie
- Den Shortcode
[recently_viewed_products]in diefunctions.phpeines Child-Themes oder per Code Snippets einfügen - Den Block auf der Warenkorbseite, in der Produkt-Sidebar oder nach einer leeren Suche platzieren und Besucher zurückholen
Wie WooCommerce den Aufrufverlauf speichert
Wenn ein Besucher eine Produktseite öffnet, hängt WooCommerce stillschweigend die Produkt-ID an das Cookie woocommerce_recently_viewed an. Format: eine Zeichenkette mit | als Trennzeichen, zum Beispiel 123|456|789. Der älteste Eintrag steht links, der neueste rechts. Das Cookie ist sitzungsbasiert: Es lebt, bis der Browser geschlossen wird.
Wir müssen kein eigenes Tracking für Aufrufe schreiben. WooCommerce sammelt die Daten bereits. Die Aufgabe des Shortcodes: die Zeichenkette auslesen, in IDs aufteilen, nur existierende und veröffentlichte Produkte herausfiltern und sie an den eingebauten [products]-Mechanismus übergeben.
Dieser Ansatz liefert natives WooCommerce-Markup: responsives Raster, Bestands- und Preisbehandlung, „In den Warenkorb"-Button, alles, was der Standard-Shortcode [products] kann, ohne das Anzeige-Template neu implementieren zu müssen.
Fertiger Code: Shortcode [recently_viewed_products]
Fügen Sie diesen Code in die functions.php eines Child-Themes oder über das Plugin Code Snippets ein. Er registriert den Shortcode [recently_viewed_products] mit zwei Parametern: per_page und columns.
1 /** 2 * Shortcode: [recently_viewed_products per_page="5" columns="4"] 3 * 4 * Displays products recently viewed via the native WooCommerce cookie. 5 * Uses the built-in [products] shortcode for rendering — no custom WP_Query. 6 */ 7 add_shortcode( 'recently_viewed_products', 'sd_recently_viewed_products' ); 8 9 function sd_recently_viewed_products( $atts ) { 10 $atts = shortcode_atts( array( 11 'per_page' => 5, 12 'columns' => 4, 13 ), $atts ); 14 15 // Read the WooCommerce cookie 16 $cookie = ! empty( $_COOKIE['woocommerce_recently_viewed'] ) 17 ? wp_unslash( $_COOKIE['woocommerce_recently_viewed'] ) 18 : ''; 19 20 if ( empty( $cookie ) ) { 21 return '<p>' . esc_html__( 'You have not viewed any products yet.', 'textdomain' ) . '</p>'; 22 } 23 24 // Parse and sanitize product IDs 25 $viewed_ids = array_filter( array_map( 'absint', explode( '|', $cookie ) ) ); 26 27 if ( empty( $viewed_ids ) ) { 28 return ''; 29 } 30 31 // Keep only the N most recent items (oldest first in cookie, so slice from start) 32 $viewed_ids = array_slice( $viewed_ids, 0, (int) $atts['per_page'] ); 33 34 $ids_string = implode( ',', $viewed_ids ); 35 36 return '<h3>' . esc_html__( 'Recently Viewed Products', 'textdomain' ) . '</h3>' 37 . do_shortcode( 38 "[products ids=\"$ids_string\" columns=\"{$atts['columns']}\" orderby=\"post__in\"]" 39 ); 40 }
Wo Sie den Code einfügen
**Child-Theme functions.php, die beste Option. Der Code überlebt Updates des Eltern-Themes und wird zusammen mit der übrigen Website-Anpassung in der Versionsverwaltung gespeichert.
Code-Snippets-Plugin, falls kein Child-Theme vorhanden ist. Installieren Sie Code Snippets von WordPress.org aus dem Verzeichnis, legen Sie ein neues Snippet an, fügen Sie den Code ein und aktivieren Sie es. Funktioniert mit jedem Theme.
Fügen Sie den Code nicht in die functions.php des Eltern-Themes ein: Sie verlieren ihn beim ersten Update.
Aufschlüsselung Zeile für Zeile
shortcode_atts()führt Benutzerparameter mit Standardwerten zusammen, Standard-WordPress-Funktion zur Verarbeitung von Shortcode-Attributen. Anders als das veralteteextract()erzeugt sie keine Variablen aus einem Array und verschmutzt nicht den Gültigkeitsbereich.wp_unslash()entfernt Escape-Backslashes aus dem Cookie-Wert, gängige Praxis beim Lesen von Superglobals in WordPress.explode('|', ...)teilt die Zeichenkette123|456|789in ein Array von String-IDs auf.array_map('absint', ...)macht aus jeder ID eine nicht-negative Ganzzahl, Schutz vor Datenmüll im Cookie.array_filter()wirft Nullen und leere Werte heraus: Produkte, die nicht mehr in der Datenbank existieren, werden auf ID-Ebene ausgeschlossen.array_slice()behält nur die N aktuellsten Aufrufe. Das Cookie schreibt alte IDs zuerst, frische zuletzt, daher kürzen wir vom Anfang des Arrays her.implode(',', ...)setzt die Zeichenkette123,456,789für den Parameteridsdes eingebauten Shortcodes zusammen.do_shortcode('[products ids="..."]')startet den nativen WooCommerce-Mechanismus: Vorschaubilder, Titel, Preise, „In den Warenkorb"-Button, alles im Standard-Markup des Themes. Nicht vorrätige Produkte werden automatisch nicht angezeigt.
Kein manuelles Zusammenbauen von <ul><li><a>... nötig. Das eingebaute [products] kann all das bereits und wird vom WooCommerce-Team gepflegt.
So nutzen Sie den Shortcode: Parameter und Beispiele
Platzieren Sie [recently_viewed_products] überall dort, wo WordPress Shortcodes verarbeitet: Seite, Beitrag, Text-Widget, Shortcode-Block im Editor.
Parameter | Standard | Zweck |
|---|---|---|
|
| Wie viele Produkte angezeigt werden sollen |
|
| Anzahl der Spalten im Raster |
Beispiele:
[recently_viewed_products per_page="3" columns="3"], kompakte Zeile mit drei Produkten für die Sidebar[recently_viewed_products per_page="8" columns="4"], zwei Zeilen mit je vier Produkten für die Warenkorbseite
Hat der Besucher noch keine Produkte angesehen, zeigt der Shortcode die neutrale Meldung „Sie haben noch keine Produkte angesehen" an, die Sie in der Zeile mit esc_html__() durch Ihren eigenen Text ersetzen können.
In der Praxis dauert die Einrichtung drei Minuten. Im obigen Video eine Schritt-für-Schritt-Aufschlüsselung der Arbeit mit WooCommerce-Shortcodes und deren Platzierung auf der Website.
Wo Sie den Shortcode platzieren: Was funktioniert

Warenkorbseite, die stärkste Platzierung. Der Besucher hat bereits Produkte gesammelt, sieht aber vor dem Checkout eine Erinnerung an das, was er zuvor angesehen hat. Bei Shops mit mehr als 50 Produkten holt das einen spürbaren Anteil abgebrochener Aufrufe zurück in den Warenkorb.
Produktseiten-Sidebar. Der Käufer vergleicht mehrere Modelle, der Block „Von Ihnen angesehen" hält Alternativen im Blickfeld. Funktioniert besonders gut in Elektronik- und Bekleidungsshops, wo der Vergleich Teil des Auswahlprozesses ist.
Nach einer leeren Suche. Bestes Fallback: „Nichts gefunden, aber hier ist, was Sie sich zuvor angesehen haben." Statt einer leeren Seite sieht der Besucher vertraute Produkte und bleibt mit höherer Wahrscheinlichkeit auf der Website.
Fügen Sie den Shortcode über ein Text-Widget in der Sidebar oder den Shortcode-Block im Gutenberg-Editor ein. In Theme-Hooks (woocommerce_after_cart, woocommerce_before_shop_loop) nur dann, wenn Sie sicher im Bearbeiten von Templates sind.
⁉️🤔 Häufig gestellte Fragen
Funktioniert der Shortcode mit Caching?
Der Shortcode hängt vom PHP-Cookie
woocommerce_recently_viewedab, das serverseitig gelesen wird. Wird die Seite auf HTTP-Ebene gecacht (via Varnish, NGINX FastCGI Cache oder einem Plugin wie WP Rocket), wird auch der Shortcode-Inhalt gecacht, und ein Besucher sieht möglicherweise „fremde" angesehene Produkte. Lösung: Seiten mit dem Shortcode vom Cache ausschließen oder einen WooCommerce-kompatiblen Cache-Modus aktivieren (ESI oder Fragment-Caching).
Kann ich angesehene Produkte ohne Shortcode, per Hook anzeigen?
Ja. Die Funktion
sd_recently_viewed_products()gibt einen String zurück, sie kann direkt in jedem Theme-Hook aufgerufen werden:echo sd_recently_viewed_products( array( 'per_page' => 4 ) );. Geeignete Hooks sindwoocommerce_after_cart,woocommerce_after_single_productundwoocommerce_before_shop_loop. Berücksichtigen Sie Caching, falls die Seite vollständig gecacht wird.
Wie viele Produkte werden im Cookie gespeichert?
Standardmäßig speichert WooCommerce die IDs der letzten 10 angesehenen Produkte. Das ist im WooCommerce-Code festgelegt und nicht über die Oberfläche konfigurierbar. Der Shortcode bestimmt über den Parameter
per_page, wie viele dieser 10 angezeigt werden.
Warum ist dieser Ansatz besser als ein separates Plugin?
Code mit 30 Zeilen fügt keine zusätzlichen Datenbankabfragen hinzu, nutzt dasselbe Cookie, das WooCommerce bereits geschrieben hat. Ein separates Plugin zieht oft einen eigenen Tracking-Mechanismus nach sich (zusätzliche Cookies, JS-Events, Datenbanktabellen). Für einen typischen Shop deckt der Shortcode das Szenario vollständig ab, ohne das Backend aufzublähen.
Warum [products], nicht ein eigenes WP_Query?
Das eingebaute
[products]liefert das responsive Raster des Themes, Preise, den „In den Warenkorb"-Button, Bestandsbehandlung und den Status „nicht vorrätig" kostenlos mit. Mit manuellemWP_Querymüssten Sie all das selbst implementieren und über WooCommerce-Updates hinweg pflegen.
Shortcode in 30 Zeilen: Lohnt sich das?
Das Cookie woocommerce_recently_viewed sind Daten, die Ihr Shop bereits sammelt. Ein 30-zeiliger Shortcode macht daraus einen funktionierenden Block „Zuletzt angesehen", ohne Plugins und zusätzliche Datenbankabfragen.
- Wenn Sie einen Shop mit mehr als 50 Produkten haben, platzieren Sie den Shortcode auf der Warenkorbseite und testen Sie per A/B-Test gegen eine Kontrollgruppe ohne den Block.
- Wenn Sie aggressives Caching einsetzen, schließen Sie die Seite mit dem Shortcode aus oder aktivieren Sie Fragment-Caching.
- Hat der Besucher noch keine Produkte angesehen, zeigt der Shortcode still eine neutrale Meldung und zerstört nicht das Layout.
Fügen Sie [recently_viewed_products] Ihrer Website hinzu und prüfen Sie in einem Inkognito-Browserfenster: Öffnen Sie einige Produkte, gehen Sie dann auf die Seite mit dem Shortcode. Zeigt der Block nicht das von Ihnen Angesehene, prüfen Sie Ihre Caching-Einstellungen, das ist die wahrscheinlichste Ursache. Welche Methode nutzen Sie, um angesehene Produkte anzuzeigen, Shortcode, Plugin oder Theme-Hook? Schreiben Sie es in die Kommentare.



