Das Geschäft bietet physische Produkte und Workshop-Klassen. Es gibt viele Produktkategorien für physische Produkte. Es gibt eine Produktkategorie für Workshop-Klassen, genannt "Ticket". Ich möchte, dass die E-Mail-Rechnung "Workshop-Anweisungen/Richtlinien" (Ort des Veranstaltungsorts, Stornierungsbedingungen usw.) anzeigt, wenn die Bestellung eine Workshop-Klasse und "Rückgaberichtlinien" enthält, wenn sie physische Produkte enthält.WooCommerce Email Rechnung: Bedingte "Richtlinien" basierend auf Produktkategorie
Mit anderen Worten, wenn ein Produkt in der Bestellung eine Produktkategorie-ID hat, die "Ticket" entspricht, muss ich Workshop Anweisungen/Richtlinien anzeigen. Und wenn ein Produkt in der Bestellung eine Produktkategorie-ID hat, die ALLEN ANDEREN ALS "Ticket" entspricht, muss ich "Rückgaberichtlinien" anzeigen.
Ich "Art" habe das funktioniert.
Das Problem ist, dass ich das nur funktionieren kann, indem ich die Richtlinien ÜBER der Order Items Tabelle in der E-Mail anzeigen. Der Kunde möchte die Richtlinien bei BOTTOM, was sinnvoll ist.
Der Code, der funktioniert, befindet sich am Ende der Vorlage email-order-items.php. Innerhalb der foreach-Schleife in dieser Datei, habe ich dies:
$nwb_product_cat_ids[] = wc_get_product_cat_ids($item['product_id']);
Nach Abschluss der foreach-Schleife ist, wo ich einige Optimierungen (das mehrdimensionale Array auf eine einfache Anordnung zu reduzieren und Entfernen von Duplikaten) und dann der Bewertung Welche Richtlinien müssen angezeigt werden?
Ich habe in der Variablen $ nwb_ticket_cat_id den Produkttyp Werkstatt ("ticket") definiert. Hier sind die beiden, wenn Schleifen:
if (in_array($nwb_ticket_cat_id, $nwb_product_cat_ids_reduced)) {
$nwb_show_policy_class = true;
}
if (count($nwb_product_cat_ids_reduced) > 1
||
!in_array($nwb_ticket_cat_id, $nwb_product_cat_ids_reduced)) {
$nwb_show_policy_return = true;
}
Dann habe ich dies:
<?php if ($nwb_show_policy_return) : ?>
<p>Here is our return policy:</p>
<?php endif; ?>
<?php if ($nwb_show_policy_class) : ?>
<p>Here is our class policy:</p>
<?php endif; ?>
Wie gesagt, das funktioniert, sondern nur durch den Gehalt über der Tabelle Bestelldetails angezeigt werden.
Ich habe versucht (eher blind, ich muss zugeben), Aktionshaken zu nutzen, vergeblich.
Hilfe gesucht. Ich bin mir sicher, dass ich mehr Informationen bereitstellen muss und werde dies gerne tun.