Ändern Sie die WooCommerce-E-Mail-Vorlagen (on-hold/processing/complete)

Lesezeit: 5 Minuten

Benutzeravatar von Mind Optimizer
Gedankenoptimierer

Ich verwende das WooCommerce-Plugin für ein E-Commerce-Geschäft und wenn ich eine Bestellung erstelle oder ihren Status ändere, wird immer eine E-Mail gesendet, um den aktuellen Status der Bestellung zu informieren. Aus aktuellen Gründen gibt es keine Informationen zum Preis der Produkte und der WooCommerce-E-Mail-Vorlagen mit Preis-, Zwischensummen- und Gesamtdaten in den E-Mail-Bestelldetails. Was ich brauche, ist, diese Vorlagen zu ändern, um die Preis-, Zwischensummen- und Gesamtdaten zu entfernen und auch die Adressenüberschriften zu ändern.

Ich habe den Woocommerce-Plugin-Ordner durchsucht, um herauszufinden, wo sich die E-Mail-Vorlagen befinden, und ich habe gegoogelt und eine fehlerhafte Lösung gefunden, die darin besteht, den Haken zu entfernen, der die Bestelldaten generiert, der im WC_Emails-Klassenkonstruktor gefunden wurde, ihn dann erneut hinzuzufügen und mit einer benutzerdefinierten Funktion zu verbinden die die gewünschte Struktur erzeugt. Die Lösung funktioniert für mich teilweise so, als ob ich eine Bestellung erstellt habe, wenn sich die Bestellung zum ersten Mal im Wartezustand befindet und eine E-Mail gesendet wird und wie erforderlich aussieht, aber wenn ich den Status der Bestellung z. B. in Bearbeitung ändere, oder jede nachfolgende Bestellung besagt, dass jetzt eine weitere E-Mail mit zwei Bestelldetailtabellen gesendet wird, die von meiner benutzerdefinierten Funktion generierte und darunter die von WooCommerce generierte, wie im Bild unten gezeigt.

Geben Sie hier die Bildbeschreibung ein

// add the action
add_action( 'woocommerce_email_order_details', 'remove_order_details', 10, 4);
add_action( 'woocommerce_email_order_details','action_woocommerce_email_order_details', 10, 4);

// define the woocommerce_email_order_details callback
function action_woocommerce_email_order_details($order, $sent_to_admin, $plain_text, $email)
{
    $text_align = is_rtl() ? 'right' : 'left';
    ?>
    <h2>
        <?php
        if ($sent_to_admin) {
            $before="<a class="link" href="" . esc_url($order->get_edit_order_url()) . '">';
            $after="</a>";
        } else {
            $before="";
            $after="";
        }
        /* translators: %s: Order ID. */
        echo wp_kses_post($before . sprintf(__('[Order #%s]', 'woocommerce') . $after . ' (<time datetime="%s">%s</time>)', $order->get_order_number(), $order->get_date_created()->format('c'), wc_format_datetime($order->get_date_created())));
        ?>
    </h2>

    <div style="margin-bottom: 40px;">
        <table class="td" cellspacing="0" cellpadding="6"
               style="width: 100%; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;" border="1">
            <thead>
            <tr>
                <th class="td" scope="col"
                    style="text-align:<?php echo esc_attr($text_align); ?>;"><?php esc_html_e('Product', 'woocommerce'); ?></th>
                <th class="td" scope="col"
                    style="text-align:<?php echo esc_attr($text_align); ?>;"><?php esc_html_e('Quantity', 'woocommerce'); ?></th>
            </tr>
            </thead>
            <tbody>
            <?php foreach ($order->get_items() as $item_id => $item) { ?>
                <tr class="<?php echo esc_attr(apply_filters('woocommerce_order_item_class', 'order_item', $item, $order)); ?>">
                    <td class="td"
                        style="text-align:<?php echo esc_attr($text_align); ?>; vertical-align: middle; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif; word-wrap:break-word;">
                        <?php

                        // Product name.
                        echo wp_kses_post(apply_filters('woocommerce_order_item_name', $item->get_name(), $item, false));

                        // allow other plugins to add additional product information here.
                        do_action('woocommerce_order_item_meta_start', $item_id, $item, $order, $plain_text);

                        // allow other plugins to add additional product information here.
                        do_action('woocommerce_order_item_meta_end', $item_id, $item, $order, $plain_text);

                        ?>
                    </td>
                    <td class="td"
                        style="text-align:<?php echo esc_attr($text_align); ?>; vertical-align:middle; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;">
                        <?php echo wp_kses_post(apply_filters('woocommerce_email_order_item_quantity', $item->get_quantity(), $item)); ?>
                    </td>
                </tr>
            <?php } ?>
            </tbody>
            <tfoot>
            <?php
            $meta_data = $order->get_meta('_custom_px_src');
            if ($meta_data) {
                ?>
                <tr>
                    <th class="td" scope="row" colspan="2"
                        style="text-align:<?php echo esc_attr($text_align); ?>;"><?php esc_html_e(is_rtl() ? 'وصفة طبية' : 'Prescription:'); ?></th>
                    <td class="td">
                        <img src="<?php echo $meta_data['value']; ?>" alt="Prescription image" height="42" width="42">
                        <a href="<?php echo $meta_data['value']; ?>" target="_blank"></a>
                    </td>
                </tr>
                <?php
            }
            if ($order->get_customer_note()) {
                ?>
                <tr>
                    <th class="td" scope="row" colspan="2"
                        style="text-align:<?php echo esc_attr($text_align); ?>;"><?php esc_html_e('Note:', 'woocommerce'); ?></th>
                    <td class="td"
                        style="text-align:<?php echo esc_attr($text_align); ?>;"><?php echo wp_kses_post(wptexturize($order->get_customer_note())); ?></td>
                </tr>
                <?php
            }
            ?>
            </tfoot>
        </table>
    </div>
    <?php
}

function remove_order_details()
{
    $mailer = WC()->mailer(); // get the instance of the WC_Emails class
    remove_action('woocommerce_email_order_details', array($mailer, 'order_details'));
}

Was ich erwartet habe, ist eine Lösung, die nur die von meiner benutzerdefinierten Funktion generierte Bestelldetailtabelle betrifft

Ich habe das Problem gefunden, das die Duplizierung der Tabelle mit den Bestelldetails in der E-Mail-Vorlage verursacht, und es wurde die Entfernungsaktion woocommerce_email_order_details mit einer Priorität hinzugefügt, die der unten gezeigten Aktion entspricht

add_action( 'woocommerce_email_order_details', 'remove_order_details', 10, 4);
add_action( 'woocommerce_email_order_details','action_woocommerce_email_order_details', 10, 4);

Was ich jedoch tun sollte, ist, der Entfernungsaktion stattdessen eine höhere Priorität zuzuweisen

add_action( 'woocommerce_email_order_details', 'remove_order_details', 1, 4);
add_action( 'woocommerce_email_order_details','action_woocommerce_email_order_details', 10, 4); 

1426430cookie-checkÄndern Sie die WooCommerce-E-Mail-Vorlagen (on-hold/processing/complete)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy