【问题标题】:Display order total with and without VAT in Woocommerce's order email notification在 Woocommerce 订单电子邮件通知中显示包含和不包含增值税的订单总额
【发布时间】:2018-06-08 18:00:54
【问题描述】:

我正在尝试编辑订单电子邮件以添加非增值税价格!

由于我还没有找到一种方法来使用 email-order-details.php 以我想要的方式进行操作,而且我害怕即使在子主题 .php 文档中也会出现问题,所以我尝试使用我自己的 sn-ps,工作槽 function.php

    add_action( 'woocommerce_email_after_order_table', 'add_order_email_instructions', 10, 2 );

    function add_order_email_instructions( $order, $sent_to_admin ) {
       $order_data = $order->get_data();
       $order_total = $order_data['cart_tax'];
       $order_total_tax = $order_data['total_tax'];

       if ( ! $sent_to_admin ) {
         echo '
        <!-- TABLEAU à ajouter à la suite -->
        <!-- rowspan=n dans <td …> pour prendre n colonnes et colspan=n dans <td …> pour prendre n ligne -->

    <h2>Détails de votre bon de commande </h2>
    <table class="td" cellspacing="0" cellpadding="6" style="width: 100%; font-family: Helvetica, Roboto, Arial, sans-serif;" border="1">
        <thead>
        <!-- Il y a 6 colonnes et autant de ligne que de <tr></tr> -->
        </thead>
      <tbody>
        <!-- Ca c est la première ligne : Les <th> sont des titres -->
            <tr>
                <th class="td" scope="col" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Garantie Constructeur</th>
                <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">24 mois</td>
                <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Incluse</td>
            </tr>
            <tr>
                <th class="td" scope="col" colspan="3" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Livraison</th>
                <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Incluse</td>
            </tr>
            <tr>
                <th class="td" scope="col" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Délai de fabrication</th>
                <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">3 mois max.</td>
                <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;"></td>
            </tr>
            <tr>
                <th class="td" scope="col" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Délai de livraison</th>
            <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">3 semaines max.</td>
            <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;"></td>
        </tr>
       <tr>
            <th class="td" scope="col" colspan="3" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Sous-total H.T.</th>
            <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">???</td>
         </tr>
       <tr> 
    <!-- Chaque ligne de code dans un <tr> remplit chaqune des colonnes --> 
        <th class="td" scope="col" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>;">TVA</th>
        <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">20 %</td>
        <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">???*0.2</td> <!-- Sur tout les produits et options.-->
            </tr>
            <tr>
                <th class="td" scope="col" colspan="3" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Total T.T.C.</th>
                <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">???*1.2</td>
            </tr>
            <!-- -->
        </tbody>
        <tfoot>
            <!-- -->
        </tfoot>
    </table>';
        }
    }

此代码尝试使用我自己的海关单元格重新创建一个可以按 WooCommerce 生成的邮件的顺序看到的表格:事实上,我需要带有一些自定义文本的原始数据,然后是一个带有不含增值税的小计的原始数据,然后是一个原始数据单独的增值税,然后是包含增值税总额的原始数据。

在我的具体示例中,我不明白为什么将代码中的 ??? 替换为 &lt;?php echo wp_kses_post( $order_total_tax ); ?&gt; 不起作用

感谢任何帮助。

【问题讨论】:

  • 这段代码的输出是什么?
  • 我的代码在我的订单邮件末尾添加了一些额外的文本和一个表格。这里每个&lt;tr&gt; things &lt;/tr&gt; 都会在表格中添加一个新行。在最后三个&lt;tr&gt; things &lt;/tr&gt;我要替换???与非增值税小计。

标签: php wordpress woocommerce hook-woocommerce orders


【解决方案1】:

WC_Order 对象上使用WC_Abstract_Order getter methods 尝试以下操作:

要获得不含税的总计,只需计算:

 $get_total_excl_taxes = $order->get_total() - $order->get_total_tax();

所以在你的代码中:

add_action( 'woocommerce_email_after_order_table', 'add_order_email_instructions', 20, 2 );
function add_order_email_instructions( $order, $sent_to_admin ) {

   if ( ! $sent_to_admin ) {
     echo '
    <!-- TABLEAU à ajouter à la suite -->
    <!-- rowspan=n dans <td …> pour prendre n colonnes et colspan=n dans <td …> pour prendre n ligne -->

<h2>Détails de votre bon de commande </h2>
<table class="td" cellspacing="0" cellpadding="6" style="width: 100%; font-family: Helvetica, Roboto, Arial, sans-serif;" border="1">
    <thead>
    <!-- Il y a 6 colonnes et autant de ligne que de <tr></tr> -->
    </thead>
  <tbody>
    <!-- Ca c est la première ligne : Les <th> sont des titres -->
        <tr>
            <th class="td" scope="col" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Garantie Constructeur</th>
            <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">24 mois</td>
            <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Incluse</td>
        </tr>
        <tr>
            <th class="td" scope="col" colspan="3" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Livraison</th>
            <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Incluse</td>
        </tr>
        <tr>
            <th class="td" scope="col" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Délai de fabrication</th>
            <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">3 mois max.</td>
            <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;"></td>
        </tr>
        <tr>
            <th class="td" scope="col" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Délai de livraison</th>
        <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">3 semaines max.</td>
        <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;"></td>
    </tr>
   <tr>
        <th class="td" scope="col" colspan="3" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Sous-total H.T.</th>
        <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">'.wc_price($order->get_total() - $order->get_total_tax()).'</td>
     </tr>
   <tr>
<!-- Chaque ligne de code dans un <tr> remplit chaqune des colonnes -->
    <th class="td" scope="col" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>;">TVA</th>
    <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">20 %</td>
    <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">'.wc_price($order->get_total_tax()).'</td> <!-- Sur tout les produits et options.-->
        </tr>
        <tr>
            <th class="td" scope="col" colspan="3" style="text-align:<?php echo esc_attr( $text_align ); ?>;">Total T.T.C.</th>
            <td class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;">'.wc_price($order->get_total()).'</td>
        </tr>
        <!-- -->
    </tbody>
    <tfoot>
        <!-- -->
    </tfoot>
</table><br>';
    }
}

代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

【讨论】:

  • 按预期工作(除了我的 VAT/TVA 始终为 0 这似乎是 WooCommerce 的错误,而不是您的错)。一如既往的好,Merci Loïc!
猜你喜欢
  • 2015-06-13
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 2018-06-07
  • 2021-02-22
相关资源
最近更新 更多