dun*_*140 4 php wordpress checkout woocommerce hook-woocommerce
我正在使用woocommerce_checkout_fields过滤器来编辑 woocommerce 字段标签的值。它在结账页面上运行良好(正如您所期望的那样),但是我无法理解为什么它在帐户页面上不起作用。我以为这些田地还是从同一个地方取来的?更具体地说,我谈论的是 woocommerce 帐户页面上编辑地址端点上的地址字段?
我的代码尝试:
function custom_woocommerce_fields( $fields ) {
// Billing Fields
$fields['billing']['billing_first_name']['label'] = 'First name';
$fields['billing']['billing_last_name']['label'] = 'Last name';
$fields['billing']['billing_company']['label'] = 'Company name';
$fields['billing']['billing_address_1']['label'] = 'Street address';
$fields['billing']['billing_address_2']['label'] = 'Apartment, unit, etc.';
$fields['billing']['billing_city']['label'] = 'City';
$fields['billing']['billing_country']['label'] = 'Country';
$fields['billing']['billing_state']['label'] = 'County/State';
$fields['billing']['billing_postcode']['label'] = 'Postcode';
$fields['billing']['billing_email']['label'] = 'Email';
$fields['billing']['billing_phone']['label'] = 'Phone';
// Shipping Fields
$fields['shipping']['shipping_first_name']['label'] = 'First name';
$fields['shipping']['shipping_last_name']['label'] = 'Last name';
$fields['shipping']['shipping_company']['label'] = 'Company name';
$fields['shipping']['shipping_address_1']['label'] = 'Street address';
$fields['shipping']['shipping_address_2']['label'] = 'Apartment, unit, etc.';
$fields['shipping']['shipping_city']['label'] = 'City';
$fields['shipping']['shipping_country']['label'] = 'Country';
$fields['shipping']['shipping_state']['label'] = 'County/State';
$fields['shipping']['shipping_postcode']['label'] = 'Postcode';
$fields['shipping']['shipping_email']['label'] = 'Email';
$fields['shipping']['shipping_phone']['label'] = 'Phone';
// Account Fields
$fields['account']['account_username']['label'] = 'Username or email';
$fields['account']['account_password']['label'] = 'Password';
// Order Fields
$fields['order']['order_comments']['label'] = 'Order notes';
return $fields;
}
add_filter( 'woocommerce_checkout_fields' , 'custom_woocommerce_fields' );
Run Code Online (Sandbox Code Playgroud)
“我的帐户”>“地址”(编辑帐单或送货地址)中的字段未进行自定义。
\n\n\n该挂钩
\nwoocommerce_checkout_fields仅允许在结账页面上进行自定义,不会影响我的帐户“地址”部分字段。
以下内容将影响我的帐户“地址”部分字段和结帐字段,从而允许在相关的我的帐户部分上自定义帐单和运输字段。
\n\n1) 对于“我的帐户”和结帐中的地址字段(账单和送货):
\n\n在某些情况下,您需要将此过滤器用于地址字段,并且它适用于所有账单和运输默认字段:
\n\n// Billing and Shipping fields on my account edit-addresses and checkout\nadd_filter( \'woocommerce_default_address_fields\' , \'custom_override_default_address_fields\' );\nfunction custom_override_default_address_fields( $fields ) {\n $fields[\'first_name\'][\'label\'] = \'First name\';\n $fields[\'last_name\'][\'label\'] = \'Last name\';\n $fields[\'company\'][\'label\'] = \'Company name\';\n $fields[\'address_1\'][\'label\'] = \'Street address\';\n $fields[\'address_2\'][\'label\'] = \'Apartment, unit, etc.\';\n $fields[\'city\'][\'label\'] = \'City\';\n $fields[\'country\'][\'label\'] = \'Country\';\n $fields[\'state\'][\'label\'] = \'County/State\';\n $fields[\'postcode\'][\'label\'] = \'Postcode\';\n\n return $fields;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n您可以使用 WooCommerce 条件标签 is_account_page() 和 is_checkout() 来定位我的帐户页面或结账页面\xe2\x80\xa6
\n\n2) 对于我的帐户编辑地址和结帐的账单字段:
\n\n// Billing fields on my account edit-addresses and checkout\nadd_filter( \'woocommerce_billing_fields\' , \'custom_billing_fields\' );\nfunction custom_billing_fields( $fields ) {\n\n // Billing Fields\n $fields[\'billing_first_name\'][\'label\'] = \'First name\';\n $fields[\'billing_last_name\'][\'label\'] = \'Last name\';\n $fields[\'billing_company\'][\'label\'] = \'Company name\';\n $fields[\'billing_address_1\'][\'label\'] = \'Street address\';\n $fields[\'billing_address_2\'][\'label\'] = \'Apartment, unit, etc.\';\n $fields[\'billing_city\'][\'label\'] = \'City\';\n $fields[\'billing_country\'][\'label\'] = \'Country\';\n $fields[\'billing_state\'][\'label\'] = \'County/State\';\n $fields[\'billing_postcode\'][\'label\'] = \'Postcode\';\n $fields[\'billing_email\'][\'label\'] = \'Email\';\n $fields[\'billing_phone\'][\'label\'] = \'Phone\';\n\n return $fields;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n3) 对于我的帐户上的运输字段,编辑地址和结账
\n\n// Shipping fields on my account edit-addresses and checkout\nadd_filter( \'woocommerce_shipping_fields\' , \'custom_shipping_fields\' );\nfunction custom_shipping_fields( $fields ) {\n\n // Shipping Fields\n $fields[\'shipping_first_name\'][\'label\'] = \'First name\';\n $fields[\'shipping_last_name\'][\'label\'] = \'Last name\';\n $fields[\'shipping_company\'][\'label\'] = \'Company name\';\n $fields[\'shipping_address_1\'][\'label\'] = \'Street address\';\n $fields[\'shipping_address_2\'][\'label\'] = \'Apartment, unit, etc.\';\n $fields[\'shipping_city\'][\'label\'] = \'City\';\n $fields[\'shipping_country\'][\'label\'] = \'Country\';\n $fields[\'shipping_state\'][\'label\'] = \'County/State\';\n $fields[\'shipping_postcode\'][\'label\'] = \'Postcode\';\n $fields[\'shipping_email\'][\'label\'] = \'Email\';\n $fields[\'shipping_phone\'][\'label\'] = \'Phone\';\n\n return $fields;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n4) 所有(其他)字段仅在结账时填写:
\n\n// All fields only on checkout\nadd_filter( \'woocommerce_checkout_fields\' , \'other_custom_checkout_fields\' );\nfunction other_custom_checkout_fields( $fields ) {\n\n // Account Fields\n $fields[\'account\'][\'account_username\'][\'label\'] = \'Username or email\';\n $fields[\'account\'][\'account_password\'][\'label\'] = \'Password\';\n\n // Order Fields\n $fields[\'order\'][\'order_comments\'][\'label\'] = \'Order notes\';\n\n return $fields;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n5) 另外,根据所选国家/地区,您应该需要使用过滤器:
\n\nwoocommerce_country_locale_field_selectorswoocommerce_get_country_locale_default这些位于WC_CountryClass 上。
代码位于活动子主题(或活动主题)的functions.php 文件中。
\n\n相关官方文档:使用操作和过滤器自定义结帐字段
\n| 归档时间: |
|
| 查看次数: |
8108 次 |
| 最近记录: |