Удалить раздел информации о заказе из шаблона электронной почты в woocommerce

Я пытаюсь удалить раздел Информация о заказе по электронным письмам завершенного заказа и счета клиента.

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

Не удается найти, как удалить это в:

wp-content/plugins/woocommerce/templates/emails/customer-completed-order.php 

 <?php /** * Subscription information template * * @author Brent Shepherd / Chuck Mac * @package WooCommerce_Subscriptions/Templates/Emails * @version 1.5 */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } ?> <?php if ( ! empty( $subscriptions ) ) : ?> <h2><?php esc_html_e( 'Order Information:', 'woocommerce-subscriptions' ) ?></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 esc_html_e( 'Order', 'woocommerce-subscriptions' ); ?></th> <th scope="col" style="text-align:left; border: 1px solid #eee;"><?php esc_html_e( 'Start Date', 'woocommerce-subscriptions' ); ?></th> <th scope="col" style="text-align:left; border: 1px solid #eee;"><?php esc_html_e( 'End Date', 'woocommerce-subscriptions' ); ?></th> <th scope="col" style="text-align:left; border: 1px solid #eee;"><?php esc_html_e( 'Price', 'woocommerce-subscriptions' ); ?></th> </tr> </thead> <tbody> <?php foreach ( $subscriptions as $subscription ) : ?> <tr> <td scope="row" style="text-align:left; border: 1px solid #eee;"><a href="<?php echo esc_url( ( $is_admin_email ) ? wcs_get_edit_post_link( $subscription->id ) : $subscription->get_view_order_url() ); ?>"><?php echo esc_html( $subscription->get_order_number() ); ?></a></td> <td scope="row" style="text-align:left; border: 1px solid #eee;"><?php echo esc_html( date_i18n( wc_date_format(), $subscription->get_time( 'start', 'site' ) ) ); ?></td> <td scope="row" style="text-align:left; border: 1px solid #eee;"><?php echo esc_html( ( 0 < $subscription->get_time( 'end' ) ) ? date_i18n( wc_date_format(), $subscription->get_time( 'end', 'site' ) ) : __( 'When Cancelled', 'woocommerce-subscriptions' ) ); ?></td> <td scope="row" style="text-align:left; border: 1px solid #eee;"><?php echo wp_kses_post( $subscription->get_formatted_order_total() ); ?></td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> 

Пожалуйста, порекомендуйте.

Вы не хотите удалять весь крюк действия. Это может повлиять на другие плагины, которые полагаются на его присутствие. (Не говоря уже о том, что детали заказа находятся в woocommerce_email_order_details а не в woocommerce_email_order_meta ).

Правильный способ удалить данные заказа из всех электронных писем – удалить их функцию обратного вызова, которая является WC_Emails::order_details() которая добавлена ​​в woocommerce_email_order_details

Вы не можете вызвать remove_action() напрямую и поэтому должны вызывать его из обратного вызова add_action() после того, как он был добавлен в его hook, но до его запуска. В этом случае мы просто собираемся проникнуть на тот же крючок, но с более ранним приоритетом. Также обратите внимание, что remove_action() должен иметь тот же приоритет, что и add_action() который вы пытаетесь удалить.

 function so_39251827_remove_order_details( $order, $sent_to_admin, $plain_text, $email ){ $mailer = WC()->mailer(); // get the instance of the WC_Emails class remove_action( 'woocommerce_email_order_details', array( $mailer, 'order_details' ), 10, 4 ); } add_action( 'woocommerce_email_order_details', 'so_39251827_remove_order_details', 5, 4 ); 

EDIT: Инструкции по использованию

  1. Прекратите emails/customer-completed-order.php шаблон emails/customer-completed-order.php и удалите его из своей темы. Вам не нужно редактировать его напрямую, чтобы решить этот вопрос.
  2. Добавьте вышеуказанный блок кода к functions.php вашей темы или, предпочтительно, к плагину пользовательских сниппетов, например к этому .

РЕДАКТИРОВАТЬ № 2: удалить только информацию о подписках

Замените вышеуказанный код следующим текстом:

 function so_39251827_remove_subscription_details( $order, $sent_to_admin, $plain_text, $email ){ remove_action( 'woocommerce_email_after_order_table', array( 'WC_Subscriptions_Order', 'add_sub_info_email' ), 15, 3 ); } add_action( 'woocommerce_email_after_order_table', 'so_39251827_remove_subscription_details', 5, 4 ); 

Удаление этой части должно исправить работу
do_action( 'woocommerce_email_order_meta', $order, $sent_to_admin, $plain_text );

do_action ('woocommerce_email_order_meta', $ order, $ sent_to_admin, $ plain_text);

попробуйте удалить этот крючок.