2017-06-21 11 views
0

注文時に、管理者の電子メール通知にwoocommerceを挿入します。私はプラグインからこれをやっています。私は日々の仕事に役立つカスタムテーブルを追加しようとしています。 カスタム属性を配列に割り当てることを除いてコードが機能しています(コメントアウトされたセクション)。Woocommerceは、配列としてメールテンプレートにカスタム属性(タクソノミ)を追加します。

// $prodct_liter[] = $product->get_attribute('pa_liter'); 

これは「内部エラー」の原因となり、電子メールは送信されません。私の疑惑は、カスタムタクソノミーが必然的に配列に入りたくないということですか?私は "name"と "qty"を使って配列にそれらをどのように追加できますか?

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

function add_frakt_storrelser($order, $sent_to_admin) { 
if ($sent_to_admin) { 

    echo '<p></p><table class="td" cellspacing="0" cellpadding="6" style="width: 100%; font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;" border="1"><thead><tr>'; 
    $product_list = ''; 
    $order_item = $order->get_items(); 

    foreach($order_item as $product) { 

     $prodct_name[] = $product['name']; 
     $prodct_quantity[] = $product['qty']; 
    // $prodct_liter[] = $product->get_attribute('pa_liter'); 
    } 
    echo '<th class="td" scope="col">'; 
    $product_list = implode('</th> 
     <th class="td" scope="col">', $prodct_name); 
    echo "$product_list"; 

    echo '</th></tr><tr><th class="td" scope="col">'; 
    $product_list = implode('</th> 
     <th class="td" scope="col">', $prodct_quantity); 
    echo "$product_list"; 

    //echo '</th></tr><tr><th class="td" scope="col">'; 
    //$product_list = implode('</th> 
    // <th class="td" scope="col">', $prodct_liter); 
    //echo "$product_list"; 

    echo '</th></tr></thead>'; 
echo '</tbody></table>'; 



} 
} 

答えて

0

私はそれを理解しているように見えますが、私はまだ考えている配列の取り扱いについて学ぶことがたくさんあります。

$order_item = $order->get_items(); 

属性Imを含む配列を返しません。だから私は完全な製品の配列を取得するコマンドに製品IDを渡す必要があります。

$prodct_id = $product['product_id']; 
    $ting = wc_get_product($prodct_id); 

次に属性を取得できます。

$prodct_liter[] = $ting->get_attribute('pa_liter'); 

全コード

add_action('woocommerce_email_before_order_table', 'add_frakt_storrelser', 10, 2); 

function add_frakt_storrelser($order, $sent_to_admin) { 
if ($sent_to_admin) { 

    echo '<p></p><table class="td" cellspacing="0" cellpadding="6" style="width: 100%; font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;" border="1"><thead><tr>'; 
    $product_list = ''; 
    $order_item = $order->get_items(); 

    foreach($order_item as $product) { 
     $prodct_id = $product['product_id']; 
     $ting = wc_get_product($prodct_id); 
     $prodct_name[] = $product['name']; 
     $prodct_quantity[] = $product['qty']; 
     if (!empty($ting->get_attribute('pa_kolli-stor'))) { 
      $prodct_kolli[] = $ting->get_attribute('pa_kolli-stor'); 
     } 
     else { 
      $prodct_kolli[] = 1; 
     } 
     $prodct_liter[] = $ting->get_attribute('pa_liter'); 
    } 
    echo '<th class="td" scope="col">'; 
    $product_list = implode('</th> 
     <th class="td" scope="col">', $prodct_name); 
    echo "$product_list"; 

    echo '</th></tr><tr><th class="td" scope="col">'; 
    $product_list = implode('</th> 
     <th class="td" scope="col">', $prodct_quantity); 
    echo "$product_list"; 

    echo '</th></tr><tr><th class="td" scope="col">'; 
    $product_list = implode('</th> 
     <th class="td" scope="col">', $prodct_kolli); 
    echo "$product_list"; 

    echo '</th></tr><tr><th class="td" scope="col">'; 
    $product_list = implode('</th> 
     <th class="td" scope="col">', $prodct_liter); 
    echo "$product_list"; 

    echo '</th></tr></thead></table>'; 
    } 
} 
(まだいくつかのバグを考え出します)
関連する問題