WooCommerce - 在我的烘焙食品网站上设置结帐字段

问题描述:

,我已安装WooCommerce,另一个名为WooCommerce的订单交货日期的插件。WooCommerce - 在我的烘焙食品网站上设置结帐字段

我安装了第二个插件,这样我的客户就可以为他们的项目选择一个交货日期,但是,我正在尝试将表单字段设置为必填字段。到目前为止,我已经能够让这个领域看起来像一个必需的领域,但还没有想出如何确保它实际上是强制执行的。有任何想法吗?

此外,如果有人熟悉WooCommerce,您是否知道我将如何做到让客户在订单确认电子邮件中收到此交货日期信息?

预先感谢您!

我的网站:www.monpetitfour.com

你应该尝试过这样的事情:

add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process'); 

function my_custom_checkout_field_process() { 
    // You can make your own control here 
    if (! $_POST[ 'e_deliverydate' ]) 
     wc_add_notice(__('Please select a delivery date'), 'error'); 
} 

的电子邮件,最简单的就是保存的元值(我认为它已经完成由你的插件)。然后,你需要在你的主题的模板复制电子邮件(客户处理-order.php),并在模板修改:

<?php $delivery_date = get_post_meta($order->id, 'custom_field_date', true); 
// If the plugin is well developed, you can't directly use magic getters : 
// $delivery_date = $order->e_deliverydate; 
// Can only by use if the post meta start with _ 
?> 
Your delivery date is <?php echo $delivery_date ?> 

您还可以使用

date_i18n(woocommerce_date_format(), strtotime($delivery_date)); 

为了格式化日期正确。

在上面的代码,你只需要找到该插件使用的自定义字段的名称(你可以在桌子上轻松搜索wp_postmeta通过现有的订单(应该是_e_deliverydate)搜索。

添加下面的代码到你的主题的functions.php文件

add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process'); 

function my_custom_checkout_field_process() { 
// Check if set, if its not set add an error. 
if (! $_POST['e_deliverydate']) 
wc_add_notice(__('Please select a delivery date.'), 'error'); 
} 

我们获得的电子邮件显示自定义字段,

add_filter('woocommerce_email_order_meta_keys', 'my_woocommerce_email_order_meta_keys'); 

function my_woocommerce_email_order_meta_keys($keys) { 
    $keys['Delivery Date'] = '_e_deliverydate'; 
    return $keys; 
} 

编辑:似乎字段值没有被保存到数据库,请尝试明确保存

add_action('woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta'); 

function my_custom_checkout_field_update_order_meta($order_id) { 
    if (! empty($_POST['e_deliverydate'])) { 
     update_post_meta($order_id, '_e_deliverydate', sanitize_text_field($_POST['e_deliverydate'])); 
    } 
} 
+0

谢谢。所以我将两者都添加到了我的主题的functions.php中,但只有第一套代码(用于必填字段)起作用。电子邮件中的第二部分(或网站上的结果确认页面)不显示所选的交付日期。有任何想法吗? – user3696987 2014-11-23 18:26:49

+0

您正在使用哪个版本的Woocommerce?检查数据库以查看wp_postmeta表是否具有给定订单的_e_deliverydate条目。 – 2014-11-24 05:31:33

+0

好吧,我刚刚检查了wp_postmeta表,并没有_e_deliverydate。只有交货日期。我正在使用Woocommerce 2.2.8和订单交付日期Woocommerce 1.2 – user3696987 2014-11-24 07:14:40