woocommerce: Related products nur nach Tags anzeigen

Über das beliebte E-Commerce Plugin woocommerce kann man sich in der Detailansicht verwandte Produkte anzeigen lassen. Woocommerce zieht sich in der Detailansicht für verwandte Produkte alle Produkte, die in der selben Kategorie liegen oder die selben Tags (Schlagwörter) gepflegt haben. Weiterhin kann man das Limit, wie viele verwandte Produkte angezeigt werden sollen, verändert werden. Alles in Allem kann man sagen: Äusserst Redakteursfreundlich, da es einfach angezeigt wird und 99% von selbst erledigt wird bzw. erledigt ist.

Wenn man aber eine Kategorie hat, in der sich alle Produkte befinden müssen, passt das oben aufgeführte Verhalten „verwandte Produkte aus Kategorie und Tags“ leider nicht mehr. Als Beispiel ein kleiner Kategoriebaum:

  • Alle Produkte
    • Hosen
      • Jeans
      • Anzughosen
    • Hemden
      • Kurzarm
      • Langarm
    • Spiritousen
      • Gin
      • Rum

Da alle Produkte in der obersten Kategorie „alle Produkte“ liegen, werden zum Beispiel bei der Anzeige einer Jeans unter Umständen auch Produkte aus der Kategorie „Gin“ angezeigt. Das passt nicht zusammen.

Nach einer etwas Recherche und Prüfung des Codes bin ich auf folgenden Filter gestoßen:

add_filter( 'woocommerce_get_related_product_cat_terms', '__return_empty_array' );

In der Funktion get_related der Klasse WC_Product (plugins/woocommerce/includes/abstract/abstract-wc-products.php) kann man durch den Filter eingreifen und so die Produktkategorien leeren. Wenn jedoch der Cache für die verwandten Produkte vorhanden ist oder nicht genug Produkte vorhanden sind, sucht Woocommerce wieder Produkte aus der selben Kategorie heraus. Somit kann es sein dass hier bei der Jeans wieder ein Gin, ein Rum oder ein sonstiges nicht passendes Produkt erscheint.

Es gibt aber noch eine weitere Stelle, an welcher man eingreifen kann. Diese befindet sich in der selben Klasse und heisst build_related_query. Hier kann man über den Filter

add_filter( 'woocommerce_product_related_posts_relate_by_category', function() {
	return false;
} );

recht einfach, schnell und sicher die Kategorien zurücksetzen. Wenn das erledigt wurde sollte man noch die gecachten verwandeten Produkte leeren, was ich über die Console mit WP-CLI erledigt habe:

wp transient delete-all

 


Beitrag veröffentlicht

in

,

von

Schlagwörter: