So übergeben Sie „$email“ an WooCommerce-E-Mail-Vorlagendateien, wenn diese nicht standardmäßig verfügbar sind

Lesezeit: 2 Minuten

Benutzer-Avatar
Demian

Ich habe viele Threads auf der Plattform überprüft. Aber es gibt keinen Thread, der erklärt, wie man die Bedingung verwendet $email>id Parameter direkt in eine Vorlage.

Das habe ich drin email-header.php:

<div style="width:600px;" id="template_header_image">
    <?php
    if ( $img = get_option( 'woocommerce_email_header_image' ) ) {
        echo '<p style="margin-top:0;"><img width="80%" height="auto" src="'%20.%20esc_url(%20$img%20)%20.%20'" alt="' . get_bloginfo( 'name', 'display' ) . '" /></p>';
    }
    if( $email->id == 'customer_processing_order'  ) {
        echo '<img alt="order in processing" src="https/example.com/image.png" />';
}
?>                          
</div>

Der src ist ein Beispiel. Das if( $email->id == 'customer_processing_order' ) funktioniert nicht.

Es scheint, dass Parameter $email wird nicht abgeholt. Ich habe versucht, es mit anzurufen global $email; aber auch das geht nicht.

Irgendein Rat?

Benutzer-Avatar
7uc1f3r

In /includes/class-wc-emails.php sehen wir nur das $email_heading übergeleitet wird wc_get_template()

/**
 * Get the email header.
 *
 * @param mixed $email_heading Heading for the email.
 */
public function email_header( $email_heading ) {
    wc_get_template( 'emails/email-header.php', array( 'email_heading' => $email_heading ) );
}

Also, um die zu übergeben $email->id Wir müssen einen Workaround verwenden, zuerst werden wir die Variable global verfügbar machen.


1) Dies kann aber über verschiedene Hooks erfolgen woocommerce_email_header Hook scheint in diesem speziellen Fall am geeignetsten zu sein:

// Header - set global variable
function action_woocommerce_email_header( $email_heading, $email ) {
    $GLOBALS['email_id'] = $email->id;
} 
add_action( 'woocommerce_email_header', 'action_woocommerce_email_header', 10, 2 );

Der Code wird in die Datei functions.php des aktiven untergeordneten Designs (oder aktiven Designs) eingefügt.

2) Dann können Sie in der gewünschten Vorlagendatei Folgendes verwenden:

2.1) setzen Sie dies gleich nach if ( ! defined( 'ABSPATH' ) ) {..}

// Getting the email ID global variable
$ref_name_globals_var = isset( $GLOBALS ) ? $GLOBALS : '';
$email_id = isset( $ref_name_globals_var['email_id'] ) ? $ref_name_globals_var['email_id'] : '';

2.2) und an der gewünschten Stelle in Richtung Ausgang

// Targeting specific email. Multiple statuses can be added, separated by a comma
if ( in_array( $email_id, array( 'new_order', 'customer_processing_order' ) ) ) {
    // Desired output
    echo '<p style="color: red; font-size: 20px;">Your output</p>';
}

1017070cookie-checkSo übergeben Sie „$email“ an WooCommerce-E-Mail-Vorlagendateien, wenn diese nicht standardmäßig verfügbar sind

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

Privacy policy