自定义 WooCommerce 我的帐户和结账上的地址字段

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)

“我的帐户”>“地址”(编辑帐单或送货地址)中的字段未进行自定义。

Loi*_*tec 5

\n

该挂钩woocommerce_checkout_fields 仅允许在结账页面上进行自定义,不会影响我的帐户“地址”部分字段。

\n
\n\n

以下内容将影响我的帐户“地址”部分字段和结帐字段,从而允许在相关的我的帐户部分上自定义帐单和运输字段。

\n\n
\n\n

1) 对于“我的帐户”和结帐中的地址字段(账单和送货)

\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}\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以使用 WooCommerce 条件标签 is_account_page() 和 is_checkout() 来定位我的帐户页面或结账页面\xe2\x80\xa6

\n\n
\n\n

2) 对于我的帐户编辑地址和结帐的账单字段:

\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}\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

3) 对于我的帐户上的运输字段,编辑地址和结账

\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}\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

4) 所有(其他)字段仅在结账时填写:

\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}\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

5) 另外,根据所选国家/地区,您应该需要使用过滤器:

\n\n
    \n
  • woocommerce_country_locale_field_selectors
  • \n
  • woocommerce_get_country_locale_default
  • \n
\n\n

这些位于WC_CountryClass 上。

\n\n

代码位于活动子主题(或活动主题)的functions.php 文件中。

\n\n
\n\n

相关官方文档:使用操作和过滤器自定义结帐字段

\n