如何从Woocommerce电子邮件中删除价格

时间:2013-12-31 16:17:23

标签: php wordpress woocommerce

我正在尝试开发一个插件,在完成订单后向客户发送“礼品收据”。除非我无法从电子邮件中删除价格,否则我的一切工作都很完美。当我尝试编辑email-order-items.php模板并删除价格列时,电子邮件将显示为空白。

具体来说,这适用于可下载的产品,因此当我对email-order-items文件进行任何编辑时,下载链接不再显示。我只希望它从礼品收据电子邮件中剥离价格而不是其他电子邮件。

我做了什么: 在我的插件中,我调用了一个电子邮件模板“customer-gift-receipt.php”,它与Woocommerce附带的“customer-processing-order.php”非常相似。

在文件中有这一行引入了email-order-items模板并显示了链接和价格

<?php echo $order->email_order_items_table( $order->is_download_permitted(), 
     true, ($order->status=='processing') ? true : false ); ?>

This is the email-order-items template.

无论我做什么,我似乎都无法从customer-gift-receipt.php电子邮件中删除这些价格。具体来说,就是上面模板中的这一行:

<td style="text-align:left; vertical-align:middle; border: 1px solid #eee;">
    <?php echo $order->get_formatted_line_subtotal( $item ); ?>
</td>

我尝试创建email-order-items模板的副本并删除该行,然后在我的插件中调用它,但这不起作用。我还尝试在相应部分的customer-gift-receipt.php文件中复制email-order-items模板,但也失败了。当我尝试将$items = $order->get_items();直接复制到email-order-items模板中时,我必须定义customer-gift-receipt才能使其有所作为。

那么有人可以建议我从我的客户礼品收据模板中剥离价格吗?

我查看过这些链接:

Class WC_Order

Class WC_Email_Customer_Processing_Order


更新 我刚发现这个链接应该可以帮助我在课堂外引入email_order_items_tablehttps://gist.github.com/mikejolley/1965842 当我尝试在我的customer-email-receipt模板中添加上述代码并下订单时,我收到此错误:

Fatal error: Class 'order_item_meta' not found in 
   .../.../.../.../woocommerce/emails/customer-gift-receipt.php on line 41"

1 个答案:

答案 0 :(得分:1)

从电子邮件模板中禁用电子邮件订购商品表,并将该功能作为自定义功能复制到主题中。

<tbody>
    <?php //echo $order->email_order_items_table( $order->is_download_permitted(), true, ($order->status=='processing') ? true : false ); 
    echo custom_order_table($order);
    ?>
</tbody>

我不得不删除导致*致命错误的类'order_item_meta'*错误的下载和变体。所以你的自定义函数将如下所示:

       function custom_order_table($order,$price = false) {

        foreach($order->get_items() as $item) : 

        $_product = $order->get_product_from_item( $item );

        $file = $sku = $variation = $image = '';

        if ($show_image) :
          $src = wp_get_attachment_image_src( get_post_thumbnail_id( $_product->id ), 'thumbnail');
          $image = apply_filters('woocommerce_order_product_image', '<img src="'.$src[0].'" alt="Product Image" height="'.$image_size[1].'" width="'.$image_size[0].'" style="vertical-align:middle; margin-right: 10px;" />', $_product);
        endif;

        if ($show_sku && $_product->get_sku()) :
          $sku = ' (#' . $_product->get_sku() . ')';
        endif;


        $return .= '<tr>
          <td style="text-align:left; vertical-align:middle; border: 1px solid #eee;">'. $image . apply_filters('woocommerce_order_product_title', $item['name'], $_product) . $sku . $file . $variation . '</td>
          <td style="text-align:left; vertical-align:middle; border: 1px solid #eee;">'.$item['qty'].'</td>';
        if ($price):
          $return .= '<td style="text-align:left; vertical-align:middle; border: 1px solid #eee;">';

            if ( $order->display_cart_ex_tax || !$order->prices_include_tax ) : 
              $ex_tax_label = ( $order->prices_include_tax ) ? 1 : 0;
              $return .= woocommerce_price( $order->get_line_subtotal( $item ), array('ex_tax_label' => $ex_tax_label ));
            else :
              $return .= woocommerce_price( $order->get_line_subtotal( $item, true ) );
            endif;

          $return .= '</td>';
        endif;
        $return .= '</tr>';

        // Show any purchase notes
        if ($show_purchase_note) :
          if ($purchase_note = get_post_meta( $_product->id, '_purchase_note', true)) :
            $return .= '<tr><td colspan="3" style="text-align:left; vertical-align:middle; border: 1px solid #eee;">' . apply_filters('the_content', $purchase_note) . '</td></tr>';
          endif;
        endif;

      endforeach;

      echo $return;
      }