Я проверил много потоков на платформе. Но нет потока, который объясняет, как использовать условный параметр $email>id
прямо в шаблоне.
Вот что у меня есть в 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 = "' . esc_url( $img ) . '" 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>
src является примером. if ( $email->id == 'customer_processing_order' )
не работает.
Кажется, параметр $email
не подхватывается. Я пытался вызвать его с помощью global $email
; но это тоже не работает.
Любой совет?
В /includes/class-wc-emails.php мы видим, что через $email_heading
передается только 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 ) );
}
Поэтому, чтобы передать $email->id
, мы должны использовать обходной путь, сначала мы сделаем переменную глобальной доступной.
1) Это можно сделать с помощью разных хуков, но хук woocommerce_email_header
кажется наиболее подходящим в данном конкретном случае:
// 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 );
Код находится в файле functions.php активной дочерней темы (или активной темы).
2) Затем в нужном файле шаблона вы можете использовать:
2.1) поставил это сразу после 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) и в желаемом месте по направлению к выходу
// 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>';
}