2015-06-18 3 views
1

Я пытаюсь взять этот код и заставить его генерировать/прикреплять CSV.php to csv attachment - wordpress/woocommerce

Я собрал из похожих вопросов, что мне понадобятся некоторые строки;

$csvString = "billing_first_name, billing_last_name, billing_phone, billing_phone, order, Product, Quantity, Price"; 
$attachment = chunk_split(base64_encode($csvString)); 

Как только я получил свое вложение, как добавить его в электронную почту?

Правильно ли я полагаю, что он должен быть завернут в php do_action()?

Это шаблон электронной почты:

<?php 
/** 
* Admin new order email 
* 
* @author WooThemes 
* @package WooCommerce/Templates/Emails/HTML 
* @version 2.0.0 
*/ 
if (! defined('ABSPATH')) exit; // Exit if accessed directly ?> 

<?php do_action('woocommerce_email_header', $email_heading); ?> 

<p><?php printf(__('You have received an order from %s. Their order is as follows:', 'woocommerce'), $order->billing_first_name . ' ' . $order->billing_last_name); ?></p> 

<?php do_action('woocommerce_email_before_order_table', $order, true, false); ?> 

<h2><a href="<?php echo admin_url('post.php?post=' . $order->id . '&action=edit'); ?>"><?php printf(__('Order: %s', 'woocommerce'), $order->get_order_number()); ?></a> (<?php printf('<time datetime="%s">%s</time>', date_i18n('c', strtotime($order->order_date)), date_i18n(wc_date_format(), strtotime($order->order_date))); ?>)</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 _e('Product', 'woocommerce'); ?></th> 
     <th scope="col" style="text-align:left; border: 1px solid #eee;"><?php _e('Quantity', 'woocommerce'); ?></th> 
     <th scope="col" style="text-align:left; border: 1px solid #eee;"><?php _e('Price', 'woocommerce'); ?></th> 
    </tr> 
</thead> 
<tbody> 
    <?php echo $order->email_order_items_table(false, true); ?> 
</tbody> 
<tfoot> 
    <?php 
     if ($totals = $order->get_order_item_totals()) { 
      $i = 0; 
      foreach ($totals as $total) { 
       $i++; 
       ?><tr> 
        <th scope="row" colspan="2" style="text-align:left; border: 1px solid #eee; <?php if ($i == 1) echo 'border-top-width: 4px;'; ?>"><?php echo $total['label']; ?></th> 
        <td style="text-align:left; border: 1px solid #eee; <?php if ($i == 1) echo 'border-top-width: 4px;'; ?>"><?php echo $total['value']; ?></td> 
       </tr><?php 
      } 
     } 
    ?> 
</tfoot> 
</table> 

<?php do_action('woocommerce_email_after_order_table', $order, true, false); ?> 

<?php do_action('woocommerce_email_order_meta', $order, true, false); ?> 

<h2><?php _e('Customer details', 'woocommerce'); ?></h2> 

<?php if ($order->billing_email) : ?> 
<p><strong><?php _e('Email:', 'woocommerce'); ?></strong> <?php echo $order->billing_email; ?></p> 
<?php endif; ?> 
<?php if ($order->billing_phone) : ?> 
<p><strong><?php _e('Tel:', 'woocommerce'); ?></strong> <?php echo $order->billing_phone; ?></p> 
<?php endif; ?> 

<?php wc_get_template('emails/email-addresses.php', array('order' => $order)); ?> 

<?php do_action('woocommerce_email_footer'); ?> 

ответ

1

Я считаю, вы должны отправить файл CSV в качестве вложения в новое сообщение электронной почты заказа, и вы на самом деле не имеют ничего общего в шаблоне электронной почты для этого. Вы можете использовать фильтр WooCommerce для вложений электронной почты -

add_filter('woocommerce_email_attachments', 'send_your_attachment', 10, 3); 

    function send_your_attachment ($attachments, $email_type , $order) { 
     $email_types = array('new_order'); //can add more email types 

     if(isset($email_type) && in_array ($email_type, $email_types)) { 
      $attachments[] = '/path to your attachment/example.csv'; 
     } 

     return $attachments; 
    } 

Надеюсь, это поможет.