如何将自定义结帐字段添加到电子邮件 WooCommerce

已发表: 2020-12-17

将自定义结帐字段添加到电子邮件 WooCommerce 您想在您的 WooCommerce 商店中向电子邮件添加自定义结帐字段吗?

WooCommerce 是一款功能强大的 WordPress 电子商务插件,可灵活定制。

在这篇文章中,您将了解如何动态自定义其他字段,例如删除帐单地址、添加/编辑自定义结帐字段以及将这些自定义字段保存到数据库中。 此外,我将向您展示如何将这些自定义字段添加到订购电子邮件中。

从自定义结帐字段中删除附加信息

第一步是在主题的 function.php 文件中添加自定义 PHP 代码片段,以从计费屏幕中删除地址字段:

 功能 woocommerce_remove_additional_information_checkout($fields){

    未设置($fields[“billing_first_name”]);

    未设置($fields["billing_last_name"]);

    返回$字段;

}

add_filter('woocommerce_billing_fields', 'woocommerce_remove_additional_information_checkout');

这是结果: 从帐单屏幕中删除地址字段

以下代码片段将向结帐页面添加自定义字段,将数据保存到订单元数据,并在订单管理中显示订单元数据。 我收到了几个关于添加多个字段的过程的查询。 为了帮助解决这个问题,我们将添加一个代码片段来添加两个字段。

将自定义结帐字段添加到电子邮件 WooCommerce

代码片段应添加到主题的 functions.php 文件中。 我建议使用子主题,这样您的更改就不会在升级过程中丢失。

1. 添加 WooCommerce 自定义结帐字段

在 functions.php 文件中添加以下代码以添加自定义 WooCommerce 结帐字段:

 功能 njengah_custom_checkout_fields($fields){

$fields['njengah_extra_fields'] = 数组(

'njengah_text_field' => 数组(

'类型' => '文本',

'必需' => 真的,

'标签' => __( '输入文本字段' )

),

'njengah_dropdown' => 数组(

'类型' => '选择',

'options' => array('first' => __('First Option'), 'second' => __('Second Option'), 'third' => __('Third Option')),

'必需' => 真的,

'标签' => __( '下拉字段' )

)

);

返回$字段;

}

add_filter('woocommerce_checkout_fields','njengah_custom_checkout_fields');

功能 njengah_extra_checkout_fields(){

$checkout = WC()->checkout(); ?>

<div class="extra-fields">

<h3><?php _e('附加字段'); ?></h3>

<?php

foreach ( $checkout->checkout_fields['njengah_extra_fields'] as $key => $field ) : ?>

<?php woocommerce_form_field($key, $field, $checkout->get_value($key)); ?>

<?php endforeach; ?>

</div>

<?php }

add_action('woocommerce_checkout_after_customer_details','njengah_extra_checkout_fields');

这是结果: 附加字段部分

2. 保存自定义结帐 WooCommerce 字段的数据

在 functions.php 文件中添加以下代码以保存自定义结帐 WooCommerce 字段的数据。

 功能 njengah_save_extra_checkout_fields($order_id,$posted){

// 如果您使用不同的字段类型,请不要忘记适当的清理

if( isset( $posted['njengah_text_field'] ) ) {

update_post_meta($order_id, '_njengah_text_field', sanitize_text_field($posted['njengah_text_field']));

}

if( isset( $posted['njengah_dropdown'] ) && in_array( $posted['njengah_dropdown'], array( 'first', 'second', 'third' ) ) {

update_post_meta($order_id, '_njengah_dropdown', $posted['njengah_dropdown'] );

}

}

add_action('woocommerce_checkout_update_order_meta', 'njengah_save_extra_checkout_fields', 10, 2);

3. 向用户显示 WooCommerce 自定义字段的数据

在 functions.php 文件中添加以下代码以向用户显示 WooCommerce 自定义字段的数据。

 函数 njengah_display_order_data( $order_id ){ ?>

<h2><?php _e('额外信息'); ?></h2>

<table class="shop_table shop_table_responsive additional_info">

<tbody>

<tr>

<th><?php _e('输入文本字段:'); ?></th>

<td><?php echo get_post_meta($order_id, '_njengah_text_field', true ); ?></td>

</tr>

<tr>

<th><?php _e('下拉字段:'); ?></th>

<td><?php echo get_post_meta($order_id, '_njengah_dropdown', true ); ?></td>

</tr>

</tbody>

</table>

<?php }

add_action('woocommerce_thankyou','njengah_display_order_data',20);

add_action('woocommerce_view_order','njengah_display_order_data',20);

这是结果: 额外的信息

4. 显示 WooCommerce 管理员自定义订单字段

此代码片段将用作送货地址和帐单地址数据,并在用户单击小铅笔图标时显示输入。

 函数 njengah_display_order_data_in_admin( $order ){ ?>

<div class="order_data_column">

<h4><?php _e( '附加信息', 'woocommerce' ); ?><a href="#" class="edit_address"><?php _e( 'Edit', 'woocommerce' ); ?></a></h4>

<div class="地址">

<?php

回声'<p><strong>'。 __( '文本域' ) 。 ':</strong>' 。 get_post_meta($order->id, '_njengah_text_field', true)。 '</p>';

回声'<p><strong>'。 __( '落下' ) 。 ':</strong>' 。 get_post_meta($order->id, '_njengah_dropdown', true)。 '</p>'; ?>

</div>

<div class="edit_address">

<?php woocommerce_wp_text_input(array('id' => '_njengah_text_field', 'label' => __('Some field'), 'wrapper_class' => '_billing_company_field') ); ?>

<?php woocommerce_wp_text_input( array( 'id' => '_njengah_dropdown', 'label' => __( '另一个字段' ), 'wrapper_class' => '_billing_company_field' ) ); ?>

</div>

</div>

<?php }

add_action('woocommerce_admin_order_data_after_order_details','njengah_display_order_data_in_admin');




功能 njengah_save_extra_details( $post_id, $post ){

update_post_meta($post_id,'_njengah_text_field',wc_clean($_POST['_njengah_text_field']));

update_post_meta($post_id,'_njengah_dropdown',wc_clean($_POST['_njengah_dropdown']));

}

add_action('woocommerce_process_shop_order_meta', 'njengah_save_extra_details', 45, 2);

这是结果: 编辑额外信息

5. 添加 WooCommerce 自定义字段以订购电子邮件

在 functions.php 文件中添加以下代码以添加 WooCommerce 自定义字段以订购电子邮件。 如果您希望自定义电子邮件中的输出,您可以将一些文本添加到电子邮件模板中可用的任何挂钩中。

 功能 njengah_email_order_meta_fields($fields,$sent_to_admin,$order){

$fields['instagram'] = 数组(

'标签' => __( '某个字段' ),

'value' => get_post_meta($order->id, '_njengah_text_field', true ),

);

$fields['licence'] = 数组(

'标签' => __( '另一个字段' ),

'value' => get_post_meta( $order->id, '_njengah_dropdown', true ),

);

返回$字段;

}

add_filter('woocommerce_email_order_meta_fields', 'njengah_email_order_meta_fields', 10, 3);

功能 njengah_show_email_order_meta($order,$sent_to_admin,$plain_text){

$njengah_text_field = get_post_meta($order->id, '_njengah_text_field', true );

$njengah_dropdown = get_post_meta($order->id, '_njengah_dropdown', true );

如果( $plain_text ){

echo '某个字段的值是 ' 。 $njengah_text_field 。 ' 而另一个字段的值为 ' 。 $njengah_dropdown;

} 别的 {

echo '<p><strong>输入文本字段</strong>的值为 ' 。 $njengah_text_field。 ' 而 <strong>drop down</strong> 的值为 ' 。 $njengah_dropdown 。 '</p>';

}

}

add_action('woocommerce_email_customer_details', 'njengah_show_email_order_meta', 30, 3);

结论

总之,我已经说明了如何将自定义字段添加、编辑和保存到 WooCommerce 结帐页面。 此外,我编辑了电子邮件模板以添加来自电子邮件自定义字段的信息。 如果您需要进一步自定义结帐页面,可以使用结帐定制器插件。

类似文章