2017-12-29 23 views
1

私のカスタムオーダーのWooCommerce電子メールテンプレートをクライアントに送付する際に、配送および請求データのカスタムリストを挿入しています。ラベル付きの最初のリスト列と、それぞれのデータ付きの2番目の列。Wooocommerceの電子メール通知でプログラムでチェックアウトのフィールドラベルを表示

現時点では、私はwoocommerceのチェックアウトのラベル名と同じラベル名をマニュアルで挿入してから、それぞれの値/データをコードで挿入しました。これは、私が必要とするすべての言語にこれらのラベルをすべて翻訳しなければならないことを意味しています。これは、既にWoocommerceのチェックアウトラベルを使って行っています。

また、これは2回行われるため、翻訳が完全に同じでない場合もあります。これは効率的ではなく、コードも増加します。

これを避けるために、対応する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

関連する問題