Unser Game Changer. Hier geht's zu unserer Videomarketing App...

Categories
Code-Schnipsel News Plugins WooCommerce Wordpress

WooCommerce Version 2.1 – Mailbestätigung mit Rechtstexten

Heute möchte ich Euch zeigen wie man in die Mailbestätigung, die der Kunde nach einem Kauf erhält, seine Rechtstexte (AGB und Widerruf) integrieren kann. Damit ist man dann auch in dieser Hinsicht auf der sicheren Seite und der Kunde hat unmittelbar Zugriff auf diese wichtigen Informationen.

AGB und Widerruf

In einem ersten Schritt habe ich meine AGB und meinen Widerruf in eine HTML-Datei gepackt und dieser dann den Namen " rechtstexte.html " gegeben. Gespeichert habe ich diese dann in meinem woocommerce-Ordner in meinem Theme, und zwar in dem Unterordner " emails ". Sollte dieser noch nicht vorhanden sein, dann erstellt diesen bitte. Denn wir benötigen noch eine weitere. Dazu komme ich jetzt.

Templatedatei für WooCommerce Mailbestätigung anpassen

Nun brauchen wir die Datei " customer-processing-order.php ". Diese liegt im Template Ordner " emails " von WooCommerce. Diese kopieren wir jetzt in unseren eigenen Ordner wie oben beschrieben. Jetzt öffnen wir diese. Diese Datei liegt übrigens noch immer in der Version 1.6.4 vor. Da hat sich also in letzter Zeit nichts verändert. Nun platzieren wir unseren eigenen Hook so ziemlich ans Ende der Datei. Den Hook " woocommerce_email_footer " verwende ich nicht, da dieser auch Anwendung in anderen Kunden-Mails findet und ich nicht möchte, dass in jeglichen Kundennachrichten meine AGB und mein Widerruf angehängt werden. Das Ergebnis sieht dann so aus (Hook farblich markiert):

<?php
/**
 * Customer processing order email
 *
 * @author 		WooThemes
 * @package 	WooCommerce/Templates/Emails
 * @version     1.6.4
 */

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly ?>

<?php do_action('woocommerce_email_header', $email_heading); ?>

<p><?php _e( "Your order has been received and is now being processed. Your order details are shown below for your reference:", 'woocommerce' ); ?></p>

<?php do_action( 'woocommerce_email_before_order_table', $order, $sent_to_admin, $plain_text ); ?>

<h2><?php echo __( 'Order:', 'woocommerce' ) . ' ' . $order->get_order_number(); ?></h2>

<table cellspacing="0" cellpadding="6" style="width: 100%; border: 1px solid #eee;" border="1" bordercolor="#eee">
	<thead>
		<tr>
			<th scope="col" style="text-align:left; border: 1px solid #eee;"><?php _e( 'Product', 'woocommerce' ); ?></th>
			<th scope="col" style="text-align:left; border: 1px solid #eee;"><?php _e( 'Quantity', 'woocommerce' ); ?></th>
			<th scope="col" style="text-align:left; border: 1px solid #eee;"><?php _e( 'Price', 'woocommerce' ); ?></th>
		</tr>
	</thead>
	<tbody>
		<?php echo $order->email_order_items_table( $order->is_download_permitted(), true, ( $order->status=='processing' ) ? true : false ); ?>
	</tbody>
	<tfoot>
		<?php
			if ( $totals = $order->get_order_item_totals() ) {
				$i = 0;
				foreach ( $totals as $total ) {
					$i++;
					?><tr>
						<th scope="row" colspan="2" style="text-align:left; border: 1px solid #eee; <?php if ( $i == 1 ) echo 'border-top-width: 4px;'; ?>"><?php echo $total['label']; ?></th>
						<td style="text-align:left; border: 1px solid #eee; <?php if ( $i == 1 ) echo 'border-top-width: 4px;'; ?>"><?php echo $total['value']; ?></td>
					</tr><?php
				}
			}
		?>
	</tfoot>
</table>

<?php do_action( 'woocommerce_email_after_order_table', $order, $sent_to_admin, $plain_text ); ?>

<?php do_action( 'woocommerce_email_order_meta', $order, $sent_to_admin, $plain_text ); ?>

<h2><?php _e( 'Customer details', 'woocommerce' ); ?></h2>

<?php if ($order->billing_email) : ?>
	<p><strong><?php _e( 'Email:', 'woocommerce' ); ?></strong> <?php echo $order->billing_email; ?></p>
<?php endif; ?>
<?php if ($order->billing_phone) : ?>
	<p><strong><?php _e( 'Tel:', 'woocommerce' ); ?></strong> <?php echo $order->billing_phone; ?></p>
<?php endif; ?>

<?php wc_get_template( 'emails/email-addresses.php', array( 'order' => $order ) ); ?>
<?php do_action('woocommerce_email_anhang_rechtstexte'); ?>
<?php do_action( 'woocommerce_email_footer' ); ?>

Nun benötigen wir natürlich noch die zugehörige Funktion in unserer " functions.php ". Diese seht Ihr unten. Zum Verständnis habe ich jede Zeile kommentiert:

<?php
function anhang_rechtstexte() {
$datei_inhalt='';    //hier wird der Inhalt der Datei gespeichert
ob_start();  // Ausgabepuffer, um gesamten Inhalt zu sammeln
readfile('Link_zu_Euren_Rechtstexten/rechtstexte.html');  //Datei einlesen
$datei_inhalt=ob_get_contents(); // Inhalt in variable speichern
ob_end_clean();  //Ausgabepuffer leeren
echo $datei_inhalt; // Ausgabe
}
add_action('woocommerce_email_anhang_rechtstexte','anhang_rechtstexte');
?>

Fertig. Jetzt werden in jeder Mailbestätigung einer Bestellung die Rechtstexte oder je nach Inhalt der Datei " rechtstexte.html " auch andere Inhalte integriert. Bis zum nächsten Mal.

[fb_share]
0 0 votes
Article Rating
Abonnieren
Benachrichtige mich bei
guest
11 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Petra
Petra
9 Jahre zuvor

Hallo Ralf,

weißt du, wie man den spezifischen Namen des verwendeten Gutscheins in der Mail an den Kunden bzw. in den order details anzeigt?

VG!

Enrico
Enrico
9 Jahre zuvor

Hallo,
bei mir läuft es scheinbar auch nicht. Aber evtl. liegt es am Pfad für die rechtstexte.html.
Wie muss der Pfad genau lauten?
readfile(‚Link_zu_Euren_Rechtstexten/rechtstexte.html‘);

Danke, Enrico

Enrico
Enrico
9 Jahre zuvor
Reply to  Ralf

Hallo,
danke für die Antwort.

Leider funktioniert es noch nicht, ich habe den Code etwas angepasst (nur die Bezeichnung):

function anhang_impressum() {
$datei_inhalt=“; //hier wird der Inhalt der Datei gespeichert
ob_start(); // Ausgabepuffer, um gesamten Inhalt zu sammeln
$file_dir = get_stylesheet_directory();
$file_dir = $file_dir . ‚woocommerce/emails/emails_impressum.html‘;
readfile ($file_dir); //Datei einlesen
$datei_inhalt=ob_get_contents(); // Inhalt in variable speichern
ob_end_clean(); //Ausgabepuffer leeren
echo $datei_inhalt; // Ausgabe
}
add_action(‚woocommerce_email_anhang_impressum‘,’anhang_impressum‘);

In der Datei „customer_new_account.php steht als letzte Zeile:

Meine Datei heißt: „emails_impressum.html“ und liegt im Verzeichniss: „woocommerce/emails/“ (im Theme-Ornder).

Wenn ich jetzt einen neuen Account registriere, dann bekomme ich zwar eine email, aber ohne die Inhalte der entsprechenden Datei.

Viele Grüße
Enrico

Enrico
Enrico
9 Jahre zuvor
Reply to  Ralf

Hallo Ralf,

sorry, irgendwie scheint der Text nicht mit gepostet worden zu sein. Also in der Datei “customer_new_account.php“ steht als letzte Zeile:

Kann ich den Hook denn überhaupt in dieser Form anpassen, oder habe ich da noch zusätzliche Dinge zu beachten?

Ich möchte das in jede Mail einbauen (also nicht nur in die Accountregistrierung), da dummerweise bei WooCommerce jede Mail eine ellenlange Liste von Rechtstexten anfügt… Das möchte ich so in der Form nicht haben.

Danke, Enrico

Enrico
Enrico
9 Jahre zuvor
Reply to  Ralf

okay, das scheint so nicht zu klappen, hier noch mal die letzte Zeile:

„do_action(‚woocommerce_email_anhang_impressum‘);‘

allerdings mit „“

schemaja
schemaja
9 Jahre zuvor

Hi!

irgendwas scheint mit dem angegebenen Funktion (Code) für die function.php nicht zu stimmen. Oder wo genau muss man die Funktion reinkopieren. Oder liegt das an meiner aktuellen Version von WooCommerce 2.1.7 (neuere funtion.php)?

Grüße
schemaja

11
0
Would love your thoughts, please comment.x