【发布时间】:2021-01-30 07:49:12
【问题描述】:
我正在使用 WooCommerce 构建披萨外卖网站。事实上,当顾客结账时,他可以选择何时送餐。
选择框应包含从当前时间到过去所有小时的 15 分钟间隔。我想要的第一个选项是“尽快”,然后下一个选项是一个小时后(四舍五入到最接近的 15 分钟),然后每次 15 分钟。
我们的送货时间如下:
- 星期一:休息
- 周二至周五 11:30 - 14:00 和 17:00 - 22:00
- 周六和周日:13:00 - 22:00
我成功 WooCommerce 操作/挂钩,但我无法禁用当前时间之前的所有时间段。
add_action('woocommerce_before_order_notes', 'wps_add_select_checkout_field');
function wps_add_select_checkout_field( $checkout ) {
woocommerce_form_field( 'lieferzeit', array(
'type' => 'select',
'class' => array( 'wps-drop' ),
'label' => __( '<div class="gew"><span class="gew-lz">Gewünschte Lieferzeit</span></div>'),
'options' => array(
'asap' => __( 'So schnell wie möglich', 'wps' ),
'12:00' => __( '12:00', 'wps' ),
'12:30' => __( '12:30', 'wps' ),
'13:00' => __( '13:00', 'wps' ),
'13:30' => __( '13:30', 'wps' ),
'14:00' => __( '14:00', 'wps' ),
'17:30' => __( '17:30', 'wps' ),
'18:00' => __( '18:00', 'wps' ),
'18:30' => __( '18:30', 'wps' ),
'19:00' => __( '19:00', 'wps' ),
'19:30' => __( '19:30', 'wps' ),
'20:00' => __( '20:00', 'wps' ),
'20:30' => __( '20:30', 'wps' ),
'21:00' => __( '21:00', 'wps' ),
'21:30' => __( '21:30', 'wps' ),
'22:00' => __( '22:00', 'wps' ),
)
),
$checkout->get_value( 'lieferzeit' ));
}
add_action('woocommerce_checkout_update_order_meta', 'wps_select_checkout_field_update_order_meta');
function wps_select_checkout_field_update_order_meta( $order_id ) {
if ($_POST['lieferzeit']) update_post_meta( $order_id, 'lieferzeit', esc_attr($_POST['lieferzeit']));
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'wps_select_checkout_field_display_admin_order_meta', 10, 1 );
function wps_select_checkout_field_display_admin_order_meta($order){
echo '<p><strong>'.__('Delivery option').':</strong> ' . get_post_meta( $order->id, 'lieferzeit', true ) . '</p>';
}
add_filter('woocommerce_email_order_meta_keys', 'wps_select_order_meta_keys');
function wps_select_order_meta_keys( $keys ) {
$keys['lieferzeit:'] = 'lieferzeit';
return $keys;
}
【问题讨论】:
标签: php wordpress woocommerce time checkout