我找到了一种方法,可以将订单详细信息上的付款日期手动添加到 WooCommerce 后台。 我在帐单地址中创建了一个字段,我找到了日期选择器的方法。 一切正常:我可以编辑账单字段并打开日期选择器。
我的自定义代码:
// Edit Order details to add payment date
add_action( 'woocommerce_admin_order_data_after_billing_address', 'misha_editable_order_meta_billing' );
function misha_editable_order_meta_billing( $order ){
$billingdate = $order->get_meta( 'billingdate' );
?>
<div class="address">
<p<?php if( empty( $billingdate ) ) { echo ' class="none_set"'; } ?>>
<strong>Date deadline:</strong>
<?php echo ! empty( $billingdate ) ? $billingdate : 'Anytime.' ?>
</p>
</div>
<div class="edit_address">
<?php
woocommerce_wp_text_input( array(
'id' => 'paymentdate',
'label' => 'Date deadline',
'wrapper_class' => 'form-field-wide',
'class' => 'date-picker',
'style' => 'width:100%',
'value' => $billingdate,
'description' => 'Payment date.'
) );
?>
</div>
<?php
}
add_action( 'woocommerce_process_shop_order_meta', 'misha_save_general_details' );
function misha_save_general_details( $order_id ){
update_post_meta( $order_id, 'billingdate', wc_clean( $_POST[ 'billingdate' ] ) );
}
我可以编辑字段,但是当我单击“更新”按钮时无法保存字段值。
有人可以告诉我出了什么问题吗?如何保存该字段值?
我已经完全重新审视了你的代码......
代码:
add_action( 'woocommerce_admin_order_data_after_billing_address', 'add_admin_order_editable_billing_date' );
function add_admin_order_editable_billing_date( $order ){
$billing_date = $order->get_meta( '_billing_date' );
printf('<div class="address"><p%s><strong>%s:</strong> %s</p></div>
<div class="edit_address">',
!$billing_date ? ' class="none_set"' : '',
__('Date deadline', 'woocommerce'),
$billing_date ? $billing_date : __('Anytime.', 'woocommerce')
);
woocommerce_wp_text_input( array(
'id' => '_billing_date',
'label' => 'Date deadline (payment date)',
'wrapper_class' => 'form-field-wide',
'class' => 'date-picker',
'style' => 'width:100%',
'value' => $billing_date,
) );
echo '</div>';
}
add_action( 'woocommerce_process_shop_order_meta', 'save_admin_order_billing_date' );
function save_admin_order_billing_date( $order_id ){
$order = wc_get_order( $order_id );
$order->update_meta_data( '_billing_date', wc_clean( wp_unslash( $_POST[ '_billing_date' ] ) ) );
$order->save();
}
代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。