How to get all checkout fields from WooCommerce?

前端 未结 3 1909
甜味超标
甜味超标 2021-02-10 04:13

I like to get all available checkout fields, including third party ones:

$fields = WC()->checkout()->checkout_fields;

returns a fatal err

3条回答
  •  日久生厌
    2021-02-10 04:37

    A late answer but I was trying to find what worked for me and settled on this (although imperfect) solution:

    The function [WC_Countries::get_default_address_fields()][1] does not care about the Woocommerce session or checkout and therefore ignores what is in the cart for when fields are conditionally hidden (which was the case for me).

    Calling WC()->countries->get_default_address_fields() without any parameters got all billing fields (excluding custom ones) even when fields were hidden by a plugin. Although the second parameter $type can be the prefix 'billing_' 'shipping_'. The function returned the following in my session (swedish locale for label & placeholder):

    Array (
        [billing_first_name] => Array (
            [label] => Förnamn
            [required] => 1
            [class] => Array (
                [0] => form-row-first
            )
            [autocomplete] => given-name
            [priority] => 10
        )
        [billing_last_name] => Array (
            [label] => Efternamn
            [required] => 1
            [class] => Array (
                [0] => form-row-last
            )
            [autocomplete] => family-name
            [priority] => 20
        )
        [billing_country] => Array (
            [type] => country
            [label] => Land/Region
            [required] => 1
            [class] => Array (
                [0] => form-row-wide
                [1] => address-field
                [2] => update_totals_on_change
            )
            [autocomplete] => country
            [priority] => 40
        )
        [billing_address_1] => Array (
            [label] => Gatuadress
            [placeholder] => Gatunamn och nummer
            [required] => 1
            [class] => Array (
                [0] => form-row-wide
                [1] => address-field
            )
            [autocomplete] => address-line1
            [priority] => 50
        )
        [billing_city] => Array (
            [label] => Ort
            [required] => 1
            [class] => Array (
                [0] => form-row-wide
                [1] => address-field
            )
            [autocomplete] => address-level2
            [priority] => 70
        )
        [billing_state] => Array (
            [type] => state
            [label] => Stat/län
            [required] => 1
            [class] => Array (
                [0] => form-row-wide
                [1] => address-field
            )
            [validate] => Array (
                [0] => state
            )
            [autocomplete] => address-level1
            [priority] => 80
            [country_field] => billing_country
            [country] => SE
        )
        [billing_postcode] => Array (
            [label] => Postnummer
            [required] => 1
            [class] => Array (
                [0] => form-row-wide
                [1] => address-field
            )
            [validate] => Array (
                [0] => postcode
            )
            [autocomplete] => postal-code
            [priority] => 90
        )
        [billing_phone] => Array (
            [label] => Telefon
            [required] => 
        )
        [billing_email] => Array (
            [label] => E-postadress
            [required] => 1
            [type] => email
            [class] => Array (
                [0] => form-row-wide
            )
            [validate] => Array (
                [0] => email
            )
            [autocomplete] => email
            [priority] => 110
        )
    )
    

提交回复
热议问题