2015-02-04 4 views
2

Это мой пользовательский шаблон электронной почты, который отправляется после завершения заказа.Woocommerce настроить заказ электронной почты

<?php 
/** 
* Customer completed order email 
* 
* @author  WooThemes 
* @package  WooCommerce/Templates/Emails 
* @version  1.6.4 
*/ 

if (! defined('ABSPATH')) exit; // Exit if accessed directly ?> 

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

<p><?php printf(__("Hi there. Your recent order on %s has been completed. Your order details are shown below for your reference:", 'woocommerce'), get_option('blogname')); ?></p> 

<?php do_action('woocommerce_email_before_order_table', $order, $sent_to_admin, $plain_text); ?> 

<h2><?php echo __('Order:', 'woocommerce') . ' ' . $order->get_order_number(); ?></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(true, 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, $sent_to_admin, $plain_text); ?> 

<?php do_action('woocommerce_email_order_meta', $order, $sent_to_admin, $plain_text); ?> 

<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'); ?> 

Я хочу, чтобы вставить PHP код там, который подключается к базе данных, делает запрос на выборку, которая нуждается идентификатор статьи и сколько из ID's статьи покупаются, а затем отправляет новое сообщение электронной почты с этими данными. Я пробовал это несколько раз, но в конце почта всегда переставала работать из-за некоторой ошибки PHP, которую я не мог решить без возможности отладки.

В качестве примера я попробовал:

<?php 
$db = mysqli_connect("sqwffwq", "qwfqwf", "qwfqwf", "qwfwqf"); 
// here I have no clue how to receive the article ID´s and there amounts... 
// I wasn't able to find the woocommerce function 

$result = mysqli_query('SELECT * FROM etc. etc. '); 
mail(results) //Should be no problem after I got the information 
?> 
+0

У вас уже есть соединение db, $ wpdb. http://codex.wordpress.org/Class_Reference/wpdb. Также замените почту на wp_mail. В будущем, если вам нужно отлаживать только значение echo/var_dump, которое вы хотите проверить и выйти после. – David

+0

@David get_order_number(), 4); $ result = mysqli_query ('SELECT * FROM 'wp_woocommerce_order_items' WHERE order_id ="'. $ Rere2. '"'); $ myrows = $ wpdb-> get_results ('SELECT * FROM 'wp_woocommerce_order_items' WHERE order_id ="'. $ Rere2. '"'); foreach ($ myrows as $ myrow) { \t mail ("[email protected]", $ rere2, $ myrow-> order_item_id); } ?> По-прежнему получаете какую-то ошибку, любое предложение? – Etixpp

ответ

1

запустить это и видеть, что происходит с каждым результатом. Вы не упомянули выше, где вы добавляете этот код, вы уверены, что у вас есть $order?

global $wpdb; 
    $rere2 = substr($order->get_order_number(), 4); 
    echo 'rere2='.$rere2.'<br>'; 
    $myrows = $wpdb->get_results('SELECT * FROM wp_woocommerce_order_items WHERE order_id = "'.$rere2.'"'); 
    var_dump($myrows); 
    foreach ($myrows as $myrow) { 
     //mail("[email protected]",$rere2,$myrow->order_item_id); 
     $x=wp_mail("[email protected]", $rere2 ,$myrow->order_item_id); 
     echo $x.'<br>'; 

     $wpdb->update('wp_woocommerce_order_items', 
       array('id'=>$variable), 
       array('order_item_id'=>$myrow->order_item_id), 
     ); // change table name, column names and values to suit.. 
    } 

    exit; 
+0

спасибо, я получил его сейчас, всего лишь еще одну мелочь: Мне нужно сделать обновление, и запрос на обновление wpdb для меня немного запутан, поэтому он никогда не работал с массивами в запросах sql. – Etixpp

+0

Я просто хочу установить используемый столбец в 1, где id = variable – Etixpp

+0

ok обновил суть, не забывайте поднимать + принимать. – David

Смежные вопросы