Woocommerce:为支票支付方式添加支票编号输入字段求助
解决WooCommerce后台支票支付订单添加支票编号字段的方案
以下代码可实现仅在后台订单编辑页面的支票支付方式区域添加支票编号输入字段,仅内部人员可见,数据会保存到订单元数据中:
1. 添加支票编号输入字段到订单编辑页
使用woocommerce_admin_order_data_after_payment_details钩子,将字段插入到支付详情区域(对应你指定的位置):
add_action( 'woocommerce_admin_order_data_after_payment_details', 'add_check_number_field_to_order_edit_page', 10, 1 ); function add_check_number_field_to_order_edit_page( $order ) { // 仅当订单支付方式为支票支付时显示字段 if ( $order->get_payment_method() === 'cheque' ) { echo '<div class="form-field form-field-wide">'; woocommerce_wp_text_input( array( 'id' => '_check_number', 'label' => '支票编号', 'placeholder' => '请录入支票编号', 'value' => $order->get_meta( '_check_number', true ), 'wrapper_class' => 'show_if_cheque' ) ); echo '</div>'; } }
2. 保存支票编号字段数据
通过woocommerce_process_shop_order_meta钩子,将输入的支票编号保存到订单元数据:
add_action( 'woocommerce_process_shop_order_meta', 'save_check_number_field_to_order_meta', 10, 2 ); function save_check_number_field_to_order_meta( $order_id, $post ) { $order = wc_get_order( $order_id ); // 仅处理支票支付的订单 if ( $order->get_payment_method() === 'cheque' && isset( $_POST['_check_number'] ) ) { $check_number = sanitize_text_field( $_POST['_check_number'] ); $order->update_meta_data( '_check_number', $check_number ); $order->save(); } }
3. 在订单详情页面显示支票编号(可选)
如果需要在后台订单详情页的订单元区域显示已保存的支票编号,添加以下代码:
add_action( 'woocommerce_admin_order_data_after_order_details', 'display_check_number_in_order_details', 10, 1 ); function display_check_number_in_order_details( $order ) { $check_number = $order->get_meta( '_check_number', true ); if ( ! empty( $check_number ) && $order->get_payment_method() === 'cheque' ) { echo '<div class="form-field form-field-wide">'; echo '<strong>支票编号:</strong> ' . esc_html( $check_number ); echo '</div>'; } }
使用说明
- 将以上代码添加到你的主题
functions.php文件,或自定义插件中。 - 仅当订单支付方式为支票支付时,字段才会显示在订单编辑页面的支付详情区域。
- 内部人员编辑订单时录入的支票编号会自动保存,且在订单详情页可见。
内容的提问来源于stack exchange,提问作者Steve Sibulsky
相关产品推荐
相关产品推荐

