Как добавить отчество в адрес

Для того, чтобы добавить отчество в адрес на странице оформления заказа, нужно добавить в файл functions.php дочерней темы такой код

add_filter( 'woocommerce_default_address_fields', function ( $fields ) {
    $fields['first_name']['class'] = [ 'form-row-wide', 'address-field' ];
    $fields['last_name']['class']  = [ 'form-row-wide', 'address-field' ];
    $fields['second_name']         = [
        'label'        => 'Отчество',
        'required'     => true,
        'class'        => [ 'form-row-wide', 'address-field' ],
        'autocomplete' => 'family-name',
        'priority'     => 11,
    ];

    unset( $fields['company'] );

    return $fields;
} );

add_filter( 'woocommerce_customer_meta_fields', function ( $fields ) {
    $fields['billing']['fields']['billing_second_name']   = [
        'label' => 'Отчество',
    ];
    $fields['shipping']['fields']['shipping_second_name'] = [
        'label' => 'Отчество',
    ];

    return $fields;
} );

add_filter( 'woocommerce_order_formatted_billing_address', function ( $fields, $order ) {
    $fields['second_name'] = get_post_meta( $order->get_id(), '_billing_second_name', true );

    return $fields;
}, 10, 2 );
add_filter( 'woocommerce_order_formatted_shipping_address', function ( $fields, $order ) {
    $fields['second_name'] = get_post_meta( $order->get_id(), '_shipping_second_name', true );

    return $fields;
}, 10, 2 );

add_filter( 'woocommerce_formatted_address_replacements', function ( $replacements, $args ) {
    $replacements['{second_name}'] = isset( $args['second_name'] ) ? $args['second_name'] : '';
    $replacements['{name}']        = sprintf(
    /* translators: 1: first name 2: last name */
        _x( '%1$s %3$s %2$s', 'full name', 'woocommerce' ),
        $args['first_name'],
        $args['last_name'],
        isset( $args['second_name'] ) ? $args['second_name'] : ''
    );

    return $replacements;
}, 10, 2 );

Если нужно чтобы это поле не обязательным, то параметр в параметре required нужно false.

Вам помог ответ?
Похожие вопросы