Add a custom select field with collection times in WooCommerce checkout(在WooCommerce结账中添加带有收集时间的自定义选择字段)
本文介绍了在WooCommerce结账中添加带有收集时间的自定义选择字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经在我的网站上为收款时间创建了一个自定义结账字段(见附图)
这是我当前的代码:
add_action('woocommerce_before_order_notes', 'njengah_add_select_checkout_field');
function njengah_add_select_checkout_field( $checkout ) {
woocommerce_form_field( 'daypart', array(
'type' => 'select',
'class' => array( 'njengah-drop' ),
'label' => __( 'Collection Time' ),
'required' => true,
'options' => array(
'blank' => __( 'Select a collection time', 'njengah' ),
'5:00_PM' => __( '5:00 PM', 'njengah' ),
'5:30_PM' => __( '5:30 PM', 'njengah' ),
'6:00_PM' => __( '6:00 PM', 'njengah' ),
'6:30_PM' => __( '6:30 PM', 'njengah' ),
'7:00_PM' => __( '7:00 PM', 'njengah' ),
'7:30_PM' => __( '7:30 PM', 'njengah' ),
'8:00_PM' => __( '8:00 PM', 'njengah' )
)
), $checkout->get_value( 'daypart' ));
}
但是,这样做的目的是在时间过去后隐藏收集时间
例如-如果下午6点隐藏:下午5:00和下午5:30
任何帮助都是最好的
WordPress
使用根据指定类型检索当前时间的推荐答案current_time()函数。
从那时起,您可以进一步定制代码以满足您的需求,因此您可以:
function action_woocommerce_before_order_notes( $checkout ) {
// Open and close time
$start_time = strtotime( '9:00 AM' );
$stop_time = strtotime( '1:00 PM' );
/* END SETTINGS */
// Current time
$current_time = current_time( 'timestamp' );
// Initialize
$remaining_times = array();
$required = true;
// Closed
if( $current_time > $stop_time || $current_time <= $start_time ) {
// Default value
$default[''] = __( 'Closed', 'woocommerce');
// False
$required = false;
} else {
// Default value
$default[''] = __( 'Select a collection time', 'woocommerce');
// Determine first value
$first_value = strtotime( date( 'g:i A', ceil( $current_time / 1800 ) * 1800 ) );
// Add a new option every 30 minutes
while( $first_value <= $stop_time && $first_value >= $start_time ) {
$value = date( 'g:i A', $first_value );
$remaining_times[$value] = $value;
// Add 30 minutes
$first_value = strtotime( '+30 minutes', $first_value );
}
}
// Options
$options = array_merge( $default, $remaining_times );
// Add field
woocommerce_form_field( 'daypart', array(
'type' => 'select',
'class' => array( 'njengah-drop' ),
'label' => __( 'Collection Time', 'woocommerce' ),
'required' => $required,
'options' => $options,
), $checkout->get_value( 'daypart' ));
}
add_action( 'woocommerce_before_order_notes', 'action_woocommerce_before_order_notes', 10, 1 );
例如
- 当前时间=上午9:14
- 第一个值=上午9:30
- 上一个值=下午1:00(停止时间)
附加问题:假设开始时间为下午5:00,停止时间为晚上8:00我如何让客户有机会从中午12:00开始订购,而第一个时段是下午5:00?
改用以下代码:
function action_woocommerce_before_order_notes( $checkout ) {
// Display time, open and close time
$display_time = strtotime( '12:00 PM' );
$start_time = strtotime( '5:00 PM' );
$stop_time = strtotime( '8:00 PM' );
// END SETTINGS
// Current time
$current_time = current_time( 'timestamp' );
// Initialize
$remaining_times = array();
$required = true;
// Closed
if( $current_time > $stop_time || $current_time <= $display_time ) {
// Default value
$default[''] = __( 'Closed', 'woocommerce');
// False
$required = false;
} else {
// Default value
$default[''] = __( 'Select a collection time', 'woocommerce');
// Determine first value
$first_value = strtotime( date( 'g:i A', ceil( $current_time / 1800 ) * 1800 ) );
// First value is less than start time
if ( $first_value < $start_time ) {
$first_value = $start_time;
}
// Add a new option every 30 minutes
while( $first_value <= $stop_time && $first_value >= $start_time ) {
$value = date( 'g:i A', $first_value );
$remaining_times[$value] = $value;
// Add 30 minutes
$first_value = strtotime( '+30 minutes', $first_value );
}
}
// Options
$options = array_merge( $default, $remaining_times );
// Add field
woocommerce_form_field( 'daypart', array(
'type' => 'select',
'class' => array( 'njengah-drop' ),
'label' => __( 'Collection Time', 'woocommerce' ),
'required' => $required,
'options' => $options,
), $checkout->get_value( 'daypart' ));
}
add_action( 'woocommerce_before_order_notes', 'action_woocommerce_before_order_notes', 10, 1 );
例如
- 当前时间=下午12:05
- 第一个值=下午5:00
- 最后一个值=晚上8:00(停止时间)
相关:Add a select field with time intervals based on opening, closing and breaks times in WooCommerce checkout
这篇关于在WooCommerce结账中添加带有收集时间的自定义选择字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:在WooCommerce结账中添加带有收集时间的自定义选择字段
猜你喜欢
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- PHP - if 语句中的倒序 2021-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- PHP foreach() 与数组中的数组? 2022-01-01