如何将自定义结帐字段添加到电子邮件 WooCommerce
已发表: 2020-12-17您想在您的 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 结帐页面。 此外,我编辑了电子邮件模板以添加来自电子邮件自定义字段的信息。 如果您需要进一步自定义结帐页面,可以使用结帐定制器插件。
类似文章
- 如何在产品页面上添加 Woocommerce 自定义文本字段
- 如何在 WordPress 中逐步创建自定义小部件区域
- 如何移动主菜单店面 WooCommerce
- 如果可以免费送货,如何隐藏运费 WooCommerce
- 如何在 WooCommerce 中隐藏库存数量
- 如何隐藏 SKU、类别、标签元产品页面 WooCommerce
- 如何隐藏更新购物车按钮 WooCommerce 购物车页面
- 如何隐藏产品描述标题 WooCommerce
- 如何隐藏任何选项卡我的帐户页面 WooCommerce
- 如何更改 WooCommerce 结帐错误消息