WooCommerce не показывает таможенную плату в электронном письме, отправленном клиенту - PullRequest
0 голосов
/ 05 июня 2018

Я создал плагин, который добавляет комиссию к заказу от WooCommerce.Я добавляю эту плату к заказу с помощью метода wc_add_order_item с order_item_type 'fee'.Проблема, которую я имею, состоит в том, что плата не отображается в электронном письме, которое отправляется клиенту, когда тот заказчик разместил заказ.Если я правильно понимаю, WooCommerce обычно добавляет все сборы и стоимость доставки в <tfoot> из email-order-details.php с помощью $ order-> get_order_item_totals ();и зацикливается на них.

Странно то, что, пытаясь найти решение, я наткнулся на 'woocommerce_order_status_pending_to_processing_notification' hook , этот хук (если я правильно понимаю) срабатывает правильнодо того, как письмо будет отправлено пользователю.При обратном вызове этого хука у вас будет идентификатор заказа, и я вызвал этот хук в файле functions.php из моей темы.В обратном вызове я искал правильный порядок и использовал это, чтобы проверить, что было в $ order-> get_order_item_totals ().Я ожидал, что были только основные вещи, и моя добавленная плата не будет обнаружена, кроме этого.

Как это возможно, что хотя мой платеж отображается в $ order-> get_order_item_totals () до того, как письмо отправлено клиенту, но WooCommerce не будет зацикливаться на нем в email-order-details.php?Или я что-то упустил?Какие-нибудь мысли?

Конечная цель заключается в том, чтобы моя электронная плата была отправлена ​​клиенту по электронной почте.

Для справки это цикл в email-order-details.php:

$totals = $order->get_order_item_totals();

if ( $totals ) {
    $i = 0;
    foreach ( $totals as $total ) {
        $i++;
        ?>
        <tr>
            <th class="td" scope="row" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>; <?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>"><?php echo wp_kses_post( $total['label'] ); ?></th>
            <td class="td" style="text-align:<?php echo esc_attr( $text_align ); ?>; <?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>"><?php echo wp_kses_post( $total['value'] ); ?></td>
        </tr>
        <?php
    }
}

1 Ответ

0 голосов
/ 09 июня 2018

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

Попробуйтедобавив этот код в ваш functions.php или сделайте из него плагин.Вы можете редактировать сумму комиссии в соответствии с вашими потребностями.Вот код

/**
 * Add a standard $ value service fee to all transactions in cart / checkout
 */
add_action( 'woocommerce_cart_calculate_fees','wc_add_svc_fee' ); 
function wc_add_svc_fee() { 
global $woocommerce; 

if ( is_admin() && ! defined( 'DOING_AJAX' ) ) 
return;


// change the $fee to set the Service Fee to a value to suit
$fee = 1.00;


    $woocommerce->cart->add_fee( 'Service Fee', $fee, true, 'standard' );  

}

Если вы хотите, чтобы комиссионные или надбавка составляли процент от общей суммы заказа, используйте следующий код

/**
 * Add a 1% surcharge to your cart / checkout
 * change the $percentage to set the surcharge to a value to suit
 */
add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
function woocommerce_custom_surcharge() {
  global $woocommerce;

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    $percentage = 0.01;
    $surcharge = ( $woocommerce->cart->cart_contents_total + $woocommerce->cart->shipping_total ) * $percentage;    
    $woocommerce->cart->add_fee( 'Surcharge', $surcharge, true, '' );

}

Используя любой из приведенных выше кодов, Комиссияили Доплата появится в уведомлениях по электронной почте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...