【发布时间】:2021-07-01 07:42:05
【问题描述】:
我正在尝试自定义 Woocommerce myaccount 页面,尤其是编辑地址页面。
我想在一个页面上同时显示送货地址和帐单地址表单。理想情况下,在带有一个保存按钮的单一表单中。我还需要删除很多字段,以便它是一种更简单的地址形式(没有姓名、公司等)。
我已经实现了This Answer 上的代码。它工作得很好,因为它显示了两种形式。但是,我无法从表单中删除这些字段。如果我尝试这样的代码:
add_filter( 'woocommerce_billing_fields' , 'custom_override_billing_fields' );
add_filter( 'woocommerce_shipping_fields' , 'custom_override_shipping_fields' );
function custom_override_billing_fields( $fields ) {
unset($fields['billing_country']);
unset($fields['billing_company']);
unset($fields['billing_first_name']);
unset($fields['billing_last_name']);
unset($fields['billing_phone']);
unset($fields['billing_email']);
return $fields;
}
function custom_override_shipping_fields( $fields ) {
unset($fields['shipping_country']);
unset($fields['shipping_company']);
unset($fields['shipping_first_name']);
unset($fields['shipping_last_name']);
return $fields;
}
它不起作用,不再显示字段,但点击时表单不保存...它只是重定向到 /my-account/edit-address/billing/ - 并且不保存。 (此页面上显示的相同表单也不保存)。
我也试过了:
foreach ( $billing_fields as $key => $field ) :
if($key != 'billing_first_name' && $key != 'billing_last_name') :
woocommerce_form_field( $key, $field, $userMeta[$key][0] );
endif;
endforeach;
这会从显示中删除该字段,但验证仍然存在 - 以及我添加到函数中使用的任何过滤器代码
woocommerce_checkout_fields 删除验证似乎根本不会影响此表单。
有没有办法:
- 从此表单中删除由 woocommerce_form_field 生成的字段,包括验证?
- 创建一个自定义表单,允许我在代码中手动设置输入字段,并更新其中的任何字段,完全忽略来自 Woocommerce 的验证?
【问题讨论】:
标签: wordpress woocommerce filter