在 woocommerce 结帐页面自定义字段中添加日期
Add date in woocommerce checkout page custom field
我正在尝试在 woocommerce 结帐页面中添加自定义 select 选项。它正在添加额外的字段,但我想在 select 选项的值中添加日期。
有解决办法吗?
这是我在主题中添加的代码function.php
$today = new DateTime();
$tomorrow = new DateTime();
$tomorrow->modify('+1 day');
$dayAfterTomorrow = new DateTime();
$dayAfterTomorrow->modify('+2 day');
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );
function my_custom_checkout_field( $checkout ) {
echo '<div id="my_custom_checkout_field"><h2>' . __('My Field') . '</h2>';
woocommerce_form_field( 'my_field_name', array(
'type' => 'select',
'class' => array('my-field-class form-row-wide'),
'label' => __('Fill in this field'),
'placeholder' => __(''),
'options' => array(
'Today' => __("This should be today's date"),
'Tomorrow' => __('This should be tomorrow date'),
'Day After Tomorrow' => __('This should be Day After Tomorrow Date')
)), $checkout->get_value( 'my_field_name' ));
echo '</div>';
}
使用 date()
和 strtotime()
您可以按如下方式设置 options
:
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );
function my_custom_checkout_field( $checkout ) {
echo '<div id="my_custom_checkout_field"><h2>' . __('My Field') . '</h2>';
$today = strtotime('today');
$tomorrow = strtotime('tomorrow');
$dayAfterTomorrow = strtotime('+2 days');
woocommerce_form_field( 'my_field_name', array(
'type' => 'select',
'class' => array('my-field-class form-row-wide'),
'label' => __('Fill in this field'),
'placeholder' => __(''),
'options' => array(
date( 'yyyy-mm-dd', $today ) => date( get_option('date_format'), $today ),
date( 'yyyy-mm-dd', $tomorrow ) => date( get_option('date_format'), $tomorrow ),
date( 'yyyy-mm-dd', $dayAfterTomorrow ) => date( get_option('date_format'), $dayAfterTomorrow ),
)));
echo '</div>';
}
这将允许您稍后将日期保存为 YYYY-MM-DD 格式。我在 customizing the checkout fields 上写了一篇教程,您可能会觉得有用。
我正在尝试在 woocommerce 结帐页面中添加自定义 select 选项。它正在添加额外的字段,但我想在 select 选项的值中添加日期。
有解决办法吗?
这是我在主题中添加的代码function.php
$today = new DateTime();
$tomorrow = new DateTime();
$tomorrow->modify('+1 day');
$dayAfterTomorrow = new DateTime();
$dayAfterTomorrow->modify('+2 day');
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );
function my_custom_checkout_field( $checkout ) {
echo '<div id="my_custom_checkout_field"><h2>' . __('My Field') . '</h2>';
woocommerce_form_field( 'my_field_name', array(
'type' => 'select',
'class' => array('my-field-class form-row-wide'),
'label' => __('Fill in this field'),
'placeholder' => __(''),
'options' => array(
'Today' => __("This should be today's date"),
'Tomorrow' => __('This should be tomorrow date'),
'Day After Tomorrow' => __('This should be Day After Tomorrow Date')
)), $checkout->get_value( 'my_field_name' ));
echo '</div>';
}
使用 date()
和 strtotime()
您可以按如下方式设置 options
:
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );
function my_custom_checkout_field( $checkout ) {
echo '<div id="my_custom_checkout_field"><h2>' . __('My Field') . '</h2>';
$today = strtotime('today');
$tomorrow = strtotime('tomorrow');
$dayAfterTomorrow = strtotime('+2 days');
woocommerce_form_field( 'my_field_name', array(
'type' => 'select',
'class' => array('my-field-class form-row-wide'),
'label' => __('Fill in this field'),
'placeholder' => __(''),
'options' => array(
date( 'yyyy-mm-dd', $today ) => date( get_option('date_format'), $today ),
date( 'yyyy-mm-dd', $tomorrow ) => date( get_option('date_format'), $tomorrow ),
date( 'yyyy-mm-dd', $dayAfterTomorrow ) => date( get_option('date_format'), $dayAfterTomorrow ),
)));
echo '</div>';
}
这将允许您稍后将日期保存为 YYYY-MM-DD 格式。我在 customizing the checkout fields 上写了一篇教程,您可能会觉得有用。