为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 Woocommerce 多个与会者自定义元数据包含到新订单电子邮件中

如何将 Woocommerce 多个与会者自定义元数据包含到新订单电子邮件中

PHP
精慕HU 2023-08-19 17:32:06
受 Woocommerce 中将自定义元数据作为带有标题的 html 样式表添加到电子邮件中的启发,我使用以下代码来显示与会者信息:add_action('woocommerce_email_order_details', 'action_after_email_order_details', 25, 4 );function action_after_email_order_details( $order, $sent_to_admin, $plain_text, $email ){   $event = get_post_meta( $order->get_id(), 'WooCommerceEventsOrderTickets', true );   if( ! is_array($event) ) return;   $event = isset($event[1][1]) ? $event[1][1] : '';   if( sizeof($event) == 0 ) return;   $custom = isset($event['WooCommerceEventsCustomAttendeeFields']) ? $event['WooCommerceEventsCustomAttendeeFields'] : '';   // Set our array of needed data   $fields_array = [    __('First name')    => isset($event['WooCommerceEventsAttendeeName']) ? $event['WooCommerceEventsAttendeeName'] : '',    __('Last name')     => isset($event['WooCommerceEventsAttendeeLastName']) ? $event['WooCommerceEventsAttendeeLastName'] : '',   ];   if( ! $event ) return;   // The HTML Structure   $html_output = '<h2>' . __('Attendee Info') . '</h2>   <div class="discount-info">      <table cellspacing="0" cellpadding="6"><tbody>';   // Loop though the data array to set the fields   foreach( $fields_array as $label => $value ):   if( ! empty($value) ):     $html_output .= '<tr>        <th>' . $label . '</th>        <td>' . $value . '</td>    </tr>';   endif;   endforeach;   $html_output .= '</tbody></table>   </div><br>'; // HTML (end)}但它仅显示第一个与会者的信息。是否有一个选项可以包含元数据(仅名字和姓氏)但对于woocommerce_email_order_details挂钩内的所有(多个)与会者?
查看完整描述

1 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

好吧,我明白了,如果有人需要的话,这是这个函数:


add_action('woocommerce_email_order_details', 'action_after_email_order_details', 25, 4 );

function action_after_email_order_details( $order, $sent_to_admin, $plain_text, $email ) {

$events = get_post_meta( $order->get_id(), 'WooCommerceEventsOrderTickets', true );


if( ! is_array($events) ) return;


$events = isset($events[1]) ? $events[1] : '';


if( ! $events ) return;


// The HTML Structure

$html_output = '<h2>' . __('Attendee Info') . '</h2>

<div class="attendees-info">

    <table cellspacing="0" cellpadding="6"><tbody>';


$i = 1;

foreach( $events as $event ) :


    if( sizeof($event) == 0 ) return;

    // get only first and last name for each attendee

    $attendeeFirstName = isset($event['WooCommerceEventsAttendeeName']) ? $event['WooCommerceEventsAttendeeName'] : '';

    $attendeeLastName = isset($event['WooCommerceEventsAttendeeLastName']) ? $event['WooCommerceEventsAttendeeLastName'] : '';


    $html_output .= '<tr>

    <th>Attendee '. $i . '</th>

    <td>' . $attendeeFirstName .' '.$attendeeLastName. '</td>

    </tr>';


    $i++;


endforeach; 


$html_output .= '</tbody></table>

</div><br>'; // HTML (end)


// The CSS styling

$styles = '<style>

    .attendees-info table{width: 100%; font-family: \'Helvetica Neue\', Helvetica, Roboto, Arial, sans-serif;

        color: #737373; border: 1px solid #e4e4e4; margin-bottom:8px;}

    .attendees-info table th, table.tracking-info td{text-align: left; border-top-width: 4px;

        color: #737373; border: 1px solid #e4e4e4; padding: 12px; width:58%;}

    .attendees-info table td{text-align: left; border-top-width: 4px; color: #737373; border: 1px solid #e4e4e4; padding: 12px;}

</style>';


// The Output CSS + HTML

echo $styles . $html_output;

}


查看完整回答
反对 回复 2023-08-19
  • 1 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号