Php 在电子邮件通知中以编程方式显示签出字段标签

Php 在电子邮件通知中以编程方式显示签出字段标签,php,wordpress,woocommerce,labels,email-notifications,Php,Wordpress,Woocommerce,Labels,Email Notifications,在我向客户发送的自定义订单和电子商务电子邮件模板中,我插入了装运和账单数据的自定义列表。第一个列表列带有标签,第二个列表列带有相应的数据 目前,我已手动插入标签名称,与woocommerce签出中的名称相同,然后通过代码插入相应的值/数据。这意味着我必须将所有这些标签翻译成我需要的所有语言,而我已经用本地标签完成了这项工作 此外,由于这是两次,可能会出现翻译不完全相等的情况。这是没有效率的,而且还会增加代码 为了避免这种情况,我想用相应的字段标签替换标签 下面是我当前的代码,其中每个字符串“$t

在我向客户发送的自定义订单和电子商务电子邮件模板中,我插入了装运和账单数据的自定义列表。第一个列表列带有标签,第二个列表列带有相应的数据

目前,我已手动插入标签名称,与woocommerce签出中的名称相同,然后通过代码插入相应的值/数据。这意味着我必须将所有这些标签翻译成我需要的所有语言,而我已经用本地标签完成了这项工作

此外,由于这是两次,可能会出现翻译不完全相等的情况。这是没有效率的,而且还会增加代码

为了避免这种情况,我想用相应的字段标签替换标签

下面是我当前的代码,其中每个字符串“$text_xx”表示我以前手动定义的标签:

# (...)
$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>';
#(…)
$text_42b=uuuuuu('First name:','woocommerce_php_email');
# (...)
echo'

'$“行。”

”$第41段。”

  • "$文本(42a)
  • "$第42b段。”
  • "$文本(42c)
  • "$文本'u 42d'
  • "$文本(e)
  • "$文本“42f”
  • "$文本(42g)
  • "$文本_42h。”
  • "$文本'u 42i'
  • "$文本_42j':
  • "$船运名称
  • "$订单->获取装运名称()
  • "$订单->获取装运姓()
  • "$订单->获取装运公司()
  • "$跟踪数量
  • "$订单->获取装运地址1()
  • "$订单->获取装运地址\u 2()
  • "$订单->获取装运邮政编码()
  • "$订单->获取配送城市()
  • "$订单->获取装运状态()
  • "$订单->获取装运国()

”$“行。”

”$文本“61”


'$文本(60)

",;
可以使用此自定义功能完成此操作,该功能将显示按预期排序的所有现有装运标签字段:

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;
}
函数get\u checkout\u label\u字段($type='shipping'){
$domain='my_theme_slug';//数组(
'label'=>\('Shipping title',$domain),//数组(
'label'=>\('Tracking number',$domain),//获取字段($type);//获取字段
$fields=array_merge($fields1,$fields2);//合并数组
$output=array();
//排序字段标签数组
$labels=数组('title'、'first_name'、'last_name'、'company'、'traking_number',
“地址1”、“地址2”、“邮政编码”、“城市”、“州”、“国家”);
//循环标签数组以设置正确的标签值
foreach($labels作为$label){
$label='SHIPING.'$label;
if(空($fields[$label]['label']))
$fields[$label]['label']='';
$output[$label]=$fields[$label]['label'];
}
返回$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>';
echo'

。$line'

。$text\u 41

    ”; foreach(获取\u签出\u标签\u字段()作为$label\u字段) 回显“
  • ”.$label_字段。“
  • ”; 回声'
  • “.$shipping_title”
  • “.$order->get_shipping_first_name()。”
  • “.$order->get_shipping_last_name()。”
  • “.$order->get_shipping_company()。”
  • “.$tracking_num_s”
  • “.$order->get_shipping_address_1()。”
  • “.$order->get_shipping_address_2()。”
  • “.$order->get_shipping_postcode()。”
  • “.$order->get_shipping_city()。”
  • “.$order->获取装运状态()
  • “.$order->get_shipping_country()。”

。$line

“.$text_61.”


“.$text_60.”

';

经过测试,效果良好。

效果很好。再次感谢您。