2017-12-29 47 views
1

고객에게 주문형 WooCommerce 전자 메일 템플릿을 보내려면 배송 및 대금 청구 데이터의 사용자 지정 목록을 삽입합니다. 레이블이있는 첫 번째 목록 열과 해당 데이터가있는 두 번째 열입니다.Woocommerce 전자 메일 알림에서 프로그래밍 방식으로 체크 아웃 필드 레이블 표시

당분간 나는 woocommerce 체크 아웃의 레이블 이름과 동일한 레이블 이름을 수동으로 삽입 한 다음 코드별로 값/데이터를 삽입했습니다. 이것은 내가 원어민 Woocommerce 체크 아웃 라벨을 사용하여이 모든 레이블을 필요한 모든 언어로 번역해야한다는 것을 의미합니다.

또한이 작업이 두 번 수행되므로 번역이 정확히 일치하지 않을 수 있습니다. 이것은 효율적이지 않으며 코드도 증가합니다.

이를 피하기 위해 해당 woocommerce 체크 아웃 필드 레이블로 레이블을 대체하고 싶습니다. 이 정렬 기존의 모든 발송 라벨 필드를 화면에 표시하는 사용자 정의 기능을 수행 할 수 있습니다

# (...) 
$text_42b = __('First name:', 'woocommerce_php_emails'); 
# (...) 

    echo '<p id="Linha1">' . $line . '</p><p id="Shipping_title_completed">' . $text_41 . '</p> 
      <div class="Shipping_table_completed"> 
       <div class="left_table" style="float: left; width: 25%;"><ul> 
        <li>' . $text_42a . '</li> 
        <li>' . $text_42b . '</li> 
        <li>' . $text_42c . '</li> 
        <li>' . $text_42d . '</li> 
        <li>' . $text_42e . '</li> 
        <li>' . $text_42f . '</li> 
        <li>&nbsp;</li> 
        <li>' . $text_42g . '</li> 
        <li>' . $text_42h . '</li> 
        <li>' . $text_42i . '</li> 
        <li>' . $text_42j . ':</li> 
       </ul></div>  
       <div class="right_table" style="float: left; width: 75%;"><ul> 
        <li>' . $shipping_title . '&nbsp;</li> 
        <li>' . $order->get_shipping_first_name() . '&nbsp;</li> 
        <li>' . $order->get_shipping_last_name() . '&nbsp;</li> 
        <li>'. $order->get_shipping_company() . '&nbsp;</li> 
        <li>' . $tracking_num_s . '&nbsp;</li> 
        <li>' . $order->get_shipping_address_1() . '&nbsp;</li> 
        <li>' . $order->get_shipping_address_2() . '&nbsp;</li> 
        <li>' . $order->get_shipping_postcode() . '&nbsp;</li> 
        <li>' . $order->get_shipping_city() . '&nbsp;</li> 
        <li>' . $order->get_shipping_state() . '&nbsp;</li> 
        <li>' . $order->get_shipping_country() . '&nbsp;</li> 
       </ul></div> 
       <div class="Shipping_table_completed1"><img src="https://testing987654321hello.com/wp-content/uploads/2017/12/delivery-service.jpg" alt=""></div> 
      </div><p id="Linha2">' . $line . '</p><div class="Last_text_completed"><p>' . $text_61 . '<br><br><br>' . $text_60 . '</p></div>'; 

답변

1

: 전에 수동으로 정의한 각 문자열 '$의 text_xx은'레이블을 대표하는 내 현재 코드, 아래

예상대로 :

function get_checkout_label_fields($type = 'shipping'){ 
    $domain = 'my_theme_slug'; // <= define your theme domain 

    // Setting custom label fields value 
    $fields1 = array(
     'shipping_title' => array(
      'label' => __('Shipping title', $domain), // <= define your title 
     ), 
     'shipping_traking_number' => array(
      'label' => __('Tracking number', $domain), // <= define Tracking number label 
     ) 
    ); 
    $label_sep = __(':', $domain); 

    $checkout = new WC_Checkout(); // Get an instance of the WC_Checkout object 
    $fields2 = $checkout->get_checkout_fields($type); // Get the fields 

    $fields = array_merge($fields1, $fields2); // Merge arrays 
    $output = array(); 

    // Sorting field labels array 
    $labels = array('title', 'first_name', 'last_name', 'company', 'traking_number', 
     'address_1', 'address_2','postcode', 'city', 'state', 'country'); 

    // Loop through labels array to set the correct label values 
    foreach($labels as $label){ 
     $label = 'shipping_'.$label; 

     if(empty($fields[$label]['label'])) 
      $fields[$label]['label'] = '&nbsp;'; 

     $output[$label] = $fields[$label]['label']; 
    } 
    return $output; 
} 

코드는 function.php의 활성 자식 테마의 파일 (또는 활성 테마)에 간다.

echo '<p id="Linha1">' . $line . '</p> 
<p id="Shipping_title_completed">' . $text_41 . '</p> 
<div class="Shipping_table_completed"> 
    <div class="left_table" style="float: left; width: 25%;"> 
     <ul>'; 

foreach(get_checkout_label_fields() as $label_field)    
    echo '<li>' . $label_field . '</li>'; 

echo '</ul> 
    </div>  
    <div class="right_table" style="float: left; width: 75%;"> 
     <ul> 
      <li>' . $shipping_title . '&nbsp;</li> 
      <li>' . $order->get_shipping_first_name() . '&nbsp;</li> 
      <li>' . $order->get_shipping_last_name() . '&nbsp;</li> 
      <li>'. $order->get_shipping_company() . '&nbsp;</li> 
      <li>' . $tracking_num_s . '&nbsp;</li> 
      <li>' . $order->get_shipping_address_1() . '&nbsp;</li> 
      <li>' . $order->get_shipping_address_2() . '&nbsp;</li> 
      <li>' . $order->get_shipping_postcode() . '&nbsp;</li> 
      <li>' . $order->get_shipping_city() . '&nbsp;</li> 
      <li>' . $order->get_shipping_state() . '&nbsp;</li> 
      <li>' . $order->get_shipping_country() . '&nbsp;</li> 
     </ul> 
    </div> 
    <div class="Shipping_table_completed1"> 
     <img src="https://testing987654321hello.com/wp-content/uploads/2017/12/delivery-service.jpg" alt=""> 
    </div> 
</div> 
<p id="Linha2">' . $line . '</p> 
<div class="Last_text_completed"> 
    <p>' . $text_61 . '<br><br><br>' . $text_60 . '</p> 
</div>'; 

테스트 및 작품 :


이제 템플릿 코드에서이 방법으로이 기능을 사용할 수 있습니다.

+1

매력 친구처럼 작동합니다. 다시 한번 대단히 감사합니다. – Lcapitao