2016-09-30 3 views
0

Я пытаюсь отобразить много настраиваемых полей, созданных с помощью ACF, в электронном письме woocommerce, отправленном клиенту, но я застрял в том, как обрабатывать поля для нескольких заказов на продукт.отображение пользовательских полей в адресе электронной почты woocommerce для нескольких продуктов

До сих пор я достиг чего-то с кодом, предложенный helgatheviking here, но я в состоянии отобразить только CF от 1 продукта сразу

Теперь я пытаюсь выяснить, как написать это как чтобы отображать эти поля для многих продуктов в одной и той же почте. К сожалению, я хороший экземпляр & Прошедший парень, я все равно искал способ правильно написать цикл в этом контексте, но мне пока не повезло. Вы можете мне помочь?

вот код в моей functions.php до сих пор:

<?php 
add_action('woocommerce_email_order_details', 'my_custom_order_details', 5, 4); 
function my_custom_order_details($order, $sent_to_admin, $plain_text, $email){ 

    if($email->id == "customer_on_hold_order"){ 

     $field1 = null; 

     $items = $order->get_items(); 

     foreach ($items as $item) { 
      $product_name = $item['name']; 
      $product_id = $item['product_id']; 
      $product_variation_id = $item['variation_id']; 
      $field1 = get_post_meta($product_id, 'field-1', true); 
      $field2 = get_post_meta($product_id, 'field-2', true); 
      $field3 = get_post_meta($product_id, 'field-3', true); 
      $field4 = get_post_meta($product_id, 'field-4', true); 
     } 

     if($field1 && $plain_text){ 

     echo "Field 1: " . $field1 . "\n\n"; 

    } else if($field1 && ! $plain_text){ 

      <h2>My custom fields infos:</h2> 
      <p><strong>Product Name:</strong> <?php echo $product_name ?></p> 
      <p><strong>Field 1:</strong> <?php echo $field1 ?></p> 
      <p><strong>Field 2:</strong> <?php echo $field2 ?></p> 
      <p><strong>Field 3:</strong> <?php echo $field3 ?></p> 
      <p><strong>Field 4:</strong> <?php echo $field4 ?></p> 

<?php 
     } 

    } 
} 
+0

Я знаю, что код является беспорядок до сих пор, я держал, если else для $ field1, даже если я знаю, как отформатирован, и я еще не объявлял остальные поля, но я только начал редактировать код, предложенный в разговоре, который я связывал ранее – ironicmoka

ответ

1

решаемые редактирования кода таким образом:

add_action('woocommerce_email_order_details', 'my_custom_order_details', 5, 4); 
function my_custom_order_details($order, $sent_to_admin, $plain_text, $email){ 

    if($email->id == "customer_on_hold_order"){ 

     $field1 = null; 

     $items = $order->get_items(); 

     foreach ($items as $item) { 
      $product_name = $item['name']; 
      $product_id = $item['product_id']; 
      $product_variation_id = $item['variation_id']; 
      $field1 = get_post_meta($product_id, 'field-1', true); 
      $field2 = get_post_meta($product_id, 'field-2', true); 
      $field3 = get_post_meta($product_id, 'field-3', true); 
      $field4 = get_post_meta($product_id, 'field-4', true); 


     if($field1 && $plain_text){ 

     echo "Field 1: " . $field1 . "\n\n"; 

    } else if($field1 && ! $plain_text){ 

      <h2>My custom fields infos:</h2> 
      <p><strong>Product Name:</strong> <?php echo $product_name ?></p> 
      <p><strong>Field 1:</strong> <?php echo $field1 ?></p> 
      <p><strong>Field 2:</strong> <?php echo $field2 ?></p> 
      <p><strong>Field 3:</strong> <?php echo $field3 ?></p> 
      <p><strong>Field 4:</strong> <?php echo $field4 ?></p> 

<?php 
     } 

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