在 billing/shipping 表单中自定义占位符

Customizing placehorlder in billing/shipping forms

我正在使用 woocommerce_checkout_fields 过滤器来自定义 WooCommerce 结帐页面中的占位符。

  add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
  function custom_override_checkout_fields( $fields ) {
    $fields['billing']['billing_first_name']['placeholder'] = 'Name';
    $fields['billing']['billing_last_name']['placeholder'] = 'Surname';
    $fields['billing']['billing_email']['placeholder'] = 'Email';
    $fields['billing']['billing_company']['placeholder'] = 'Company Name';
    $fields['billing']['billing_phone']['placeholder'] = 'Phone';
    $fields['billing']['billing_postcode']['placeholder'] = 'Zip Code';
    $fields['billing']['billing_city']['placeholder'] = 'City';

    $fields['shipping']['shipping_first_name']['placeholder'] = 'Name';
    $fields['shipping']['shipping_last_name']['placeholder'] = 'Surname';
    $fields['shipping']['shipping_city']['placeholder'] = 'City';
    $fields['shipping']['shipping_postcode']['placeholder'] = 'Zip Code';
    return $fields;
  }

这只适用于结帐页面表单。

如何自定义 'placeholders' 所有运输和账单表格?

谢谢。

如果您指的是 我的帐户 页面中的账单和送货表格,唯一可以解决问题的过滤器挂钩(据我所知)是:

add_filter( 'woocommerce_form_field_args', 'custom_form_field_args', 10, 3 );
function custom_form_field_args( $args, $key, $value ) { 
    // your code 
    return $args;
};

它位于 wc-template-functions.php on line 1734,由 my_account 子文件夹下的 woocommerce 模板中的 woocommerce_form_field() 函数触发,form-edit-address.php 文件(显示表单字段)。


这是默认值 $args,您可以使用它来定位要在过滤器函数中进行的更改:

$defaults = array(
    'type'              => 'text',
    'label'             => '',
    'description'       => '',
    'placeholder'       => '',
    'maxlength'         => false,
    'required'          => false,
    'autocomplete'      => false,
    'id'                => $key,
    'class'             => array(),
    'label_class'       => array(),
    'input_class'       => array(),
    'return'            => false,
    'options'           => array(),
    'custom_attributes' => array(),
    'validate'          => array(),
    'default'           => '',
);

NOTE: With some changes made by Stone it's working. (see the comment).

使用:
您可以使用 'placeholder' 这种方式来定位您需要更改的每个占位符:

if ( $args['id'] == 'your_slug1' ) {
    $args['placeholder'] = 'your_new_placeholder1';
} elseif ( $args['id'] == 'your_slug2' ) {
    $args['placeholder'] = 'your_new_placeholder2';
} // elseif … and go on

帐单地址和送货地址的占位符通常相同……因此您的代码将如下所示:

add_filter( 'woocommerce_form_field_args', 'custom_form_field_args', 10, 3 );
function custom_form_field_args( $args, $key, $value ) { 
    if ( $args['id'] == 'your_slug1' ) {
        $args['placeholder'] = 'your_new_placeholder1';
    } elseif ( $args['id'] == 'your_slug2' ) {
        $args['placeholder'] = 'your_new_placeholder2';
    } // elseif … and go on 

    return $args;
};