在我的烘焙食品网站上,我安装了WooCommerce,另一个名为WooCommerce的订单交付日期插件。
我安装了第二个插件,因此我的客户可以为他们的商品选择交货日期,但是,我正在尝试将表单字段设为必填字段。到目前为止,我刚刚能够使该字段看起来像一个必填字段,但还没有弄清楚如何确保它实际上是强制执行的。有什么想法吗?
此外,如果有人熟悉WooCommerce,您知道我是如何做到的,以便客户在订单确认电子邮件中收到此交付日期信息吗?
提前谢谢!
我的网站:www.monpetitfour.com
答案 0 :(得分:1)
你应该尝试这样的事情:
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' );
}
对于电子邮件,最简单的方法是保存元值(我认为它已经由您的插件完成)。然后,您需要复制主题上的模板电子邮件(customer-processing-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)。
答案 1 :(得分:0)
将以下代码添加到主题的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'] ) );
}
}