Удалить раздел загрузок продуктов в уведомлениях по электронной почте woocommerce

Я хотел бы удалить раздел загрузки из шаблона электронной почты, который woocommerce отправит после того, как мой покупатель разместит заказ.

Не имеет смысла отправлять ссылку на скачивание моему покупателю, когда их заказ все еще находится в состоянии ожидания, обработки и возврата.

См. Изображение ниже:

введите описание изображения здесь

мой текущий шаблон электронной почты для удержания статуса:

<?php
/**
* Customer on-hold order email
*
* This template can be overridden by copying it to yourtheme/woocommerce/emails/customer-on-hold-order.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see         https://docs.woocommerce.com/document/template-structure/
* @author      WooThemes
* @package     WooCommerce/Templates/Emails
* @version     2.5.0
*/

if ( ! defined( 'ABSPATH' ) ) {
exit;
}

/**
* @hooked WC_Emails::email_header() Output the email header
*/
do_action( 'woocommerce_email_header', $email_heading, $email ); ?>

<p><?php _e( "Your order is on-hold until we confirm payment has been received. Your order details are shown below for your reference:", 'woocommerce' ); ?></p>

<?php
/**
* @hooked WC_Emails::order_meta() Shows order meta data.
*/
do_action( 'woocommerce_email_order_meta', $order, $sent_to_admin, $plain_text, $email );

/**
* @hooked WC_Emails::customer_details() Shows customer details
* @hooked WC_Emails::email_address() Shows email address
*/
do_action( 'woocommerce_email_customer_details', $order, $sent_to_admin, $plain_text, $email );

/**
* @hooked WC_Emails::email_footer() Output the email footer
*/
do_action( 'woocommerce_email_footer', $email );

Я все еще хочу сохранить детали заказа, я просто хотел удалить раздел загрузки из электронного письма.

Любая помощь будет высоко оценена.

2

Решение

По крайней мере, поскольку Woocommerce версии 3.2, как правило, раздел загрузки продуктов появляется только тогда, когда статус заказа завершен или когда менеджер магазина разрешает загрузки для заказа. Так что в вашей установке Woocommerce что-то не так.

Теперь, что вы можете сделать, если не можете решить проблему, это удалить оригинальную подключенную функцию, которая отображает раздел загрузок продуктов в уведомлении по электронной почте, и заменить его на аналогичную, которая позволит отображать раздел загрузок продуктов. только когда статус заказа завершен.

Код:

add_action( 'woocommerce_email', 'remove_email_order_downloads', 10, 1 );
function remove_email_order_downloads( $emails ){
remove_action( 'woocommerce_email_order_details', array( $emails, 'order_downloads' ), 10 );
add_action( 'woocommerce_email_order_details', 'custom_order_downloads', 9, 4 );
}

function custom_order_downloads( $order, $sent_to_admin = false, $plain_text = false, $email = '' ) {
$show_downloads = $order->has_downloadable_item() && $order->is_download_permitted() && ! $sent_to_admin && $order->has_status('completed');

if ( ! $show_downloads ) {
return;
}

$downloads = $order->get_downloadable_items();
$columns   = apply_filters( 'woocommerce_email_downloads_columns', array(
'download-product' => __( 'Product', 'woocommerce' ),
'download-expires' => __( 'Expires', 'woocommerce' ),
'download-file'    => __( 'Download', 'woocommerce' ),
) );

if ( $plain_text ) {
wc_get_template( 'emails/plain/email-downloads.php', array( 'order' => $order, 'sent_to_admin' => $sent_to_admin, 'plain_text' => $plain_text, 'email' => $email, 'downloads' => $downloads, 'columns' => $columns ) );
} else {
wc_get_template( 'emails/email-downloads.php', array( 'order' => $order, 'sent_to_admin' => $sent_to_admin, 'plain_text' => $plain_text, 'email' => $email, 'downloads' => $downloads, 'columns' => $columns ) );
}
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]