【发布时间】:2020-09-30 12:58:19
【问题描述】:
我在 woocommerce 结帐页面中添加了一些自定义结帐字段。
其中一个仅用于在页面上提供检查,下订单时不需要与订单一起记录。
我会使用什么钩子来防止该字段被添加到后端订单编辑页面中的 address_flexible_checkout_fields 值?
非常感谢
【问题讨论】:
标签: wordpress woocommerce checkout
我在 woocommerce 结帐页面中添加了一些自定义结帐字段。
其中一个仅用于在页面上提供检查,下订单时不需要与订单一起记录。
我会使用什么钩子来防止该字段被添加到后端订单编辑页面中的 address_flexible_checkout_fields 值?
非常感谢
【问题讨论】:
标签: wordpress woocommerce checkout
只是在视觉上添加一个字段(并且可能对其进行处理),但从不实际保存数据。基本上就是本教程,省略了保存步骤:https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/#section-7
使用woocommerce_after_order_notes 钩子在结帐末尾添加一个字段:
/**
* Add the field to the checkout
*/
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' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('Fill in this field'),
'placeholder' => __('Enter something'),
), $checkout->get_value( 'my_field_name' ));
echo '</div>';
}
如果该字段是必需的,您可以对其进行处理,如果留空则抛出错误消息:
/**
* Process the checkout
*/
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');
function my_custom_checkout_field_process() {
// Check if set, if its not set add an error.
if ( ! $_POST['my_field_name'] )
wc_add_notice( __( 'Please enter something into this new shiny field.' ), 'error' );
}
【讨论】: