WC_Countries::get_formatted_address PHP Метод

get_formatted_address() публичный Метод

Get country address format.
public get_formatted_address ( array $args = [] ) : string
$args array (default: array())
Результат string address
    public function get_formatted_address($args = array())
    {
        $default_args = array('first_name' => '', 'last_name' => '', 'company' => '', 'address_1' => '', 'address_2' => '', 'city' => '', 'state' => '', 'postcode' => '', 'country' => '');
        $args = array_map('trim', wp_parse_args($args, $default_args));
        extract($args);
        // Get all formats
        $formats = $this->get_address_formats();
        // Get format for the address' country
        $format = $country && isset($formats[$country]) ? $formats[$country] : $formats['default'];
        // Handle full country name
        $full_country = isset($this->countries[$country]) ? $this->countries[$country] : $country;
        // Country is not needed if the same as base
        if ($country == $this->get_base_country() && !apply_filters('woocommerce_formatted_address_force_country_display', false)) {
            $format = str_replace('{country}', '', $format);
        }
        // Handle full state name
        $full_state = $country && $state && isset($this->states[$country][$state]) ? $this->states[$country][$state] : $state;
        // Substitute address parts into the string
        $replace = array_map('esc_html', apply_filters('woocommerce_formatted_address_replacements', array('{first_name}' => $first_name, '{last_name}' => $last_name, '{name}' => $first_name . ' ' . $last_name, '{company}' => $company, '{address_1}' => $address_1, '{address_2}' => $address_2, '{city}' => $city, '{state}' => $full_state, '{postcode}' => $postcode, '{country}' => $full_country, '{first_name_upper}' => strtoupper($first_name), '{last_name_upper}' => strtoupper($last_name), '{name_upper}' => strtoupper($first_name . ' ' . $last_name), '{company_upper}' => strtoupper($company), '{address_1_upper}' => strtoupper($address_1), '{address_2_upper}' => strtoupper($address_2), '{city_upper}' => strtoupper($city), '{state_upper}' => strtoupper($full_state), '{state_code}' => strtoupper($state), '{postcode_upper}' => strtoupper($postcode), '{country_upper}' => strtoupper($full_country)), $args));
        $formatted_address = str_replace(array_keys($replace), $replace, $format);
        // Clean up white space
        $formatted_address = preg_replace('/  +/', ' ', trim($formatted_address));
        $formatted_address = preg_replace('/\\n\\n+/', "\n", $formatted_address);
        // Break newlines apart and remove empty lines/trim commas and white space
        $formatted_address = array_filter(array_map(array($this, 'trim_formatted_address_line'), explode("\n", $formatted_address)));
        // Add html breaks
        $formatted_address = implode('<br/>', $formatted_address);
        // We're done!
        return $formatted_address;
    }

Usage Example

Пример #1
0
/**
 * Generate Address string | array for given seller id or current user
 *
 * @since 2.3
 *
 * @param int seller_id, defaults to current_user_id
 * @param boolean get_array, if true returns array instead of string
 *
 * @return String|array Address | array Address
 */
function dokan_get_seller_address($seller_id = '', $get_array = false)
{
    if ($seller_id == '') {
        $seller_id = get_current_user_id();
    }
    $profile_info = dokan_get_store_info($seller_id);
    if (isset($profile_info['address'])) {
        $address = $profile_info['address'];
        $country_obj = new WC_Countries();
        $countries = $country_obj->countries;
        $states = $country_obj->states;
        $street_1 = isset($address['street_1']) ? $address['street_1'] : '';
        $street_2 = isset($address['street_2']) ? $address['street_2'] : '';
        $city = isset($address['city']) ? $address['city'] : '';
        $zip = isset($address['zip']) ? $address['zip'] : '';
        $country_code = isset($address['country']) ? $address['country'] : '';
        $state_code = isset($address['state']) ? $address['state'] : '';
        $state_code = $address['state'] == 'N/A' ? '' : $address['state'];
        $country_name = isset($countries[$country_code]) ? $countries[$country_code] : '';
        $state_name = isset($states[$country_code][$state_code]) ? $states[$country_code][$state_code] : $state_code;
    } else {
        return 'N/A';
    }
    if ($get_array == TRUE) {
        $address = array('street_1' => $street_1, 'street_2' => $street_2, 'city' => $city, 'zip' => $zip, 'country' => $country_name, 'state' => isset($states[$country_code][$state_code]) ? $states[$country_code][$state_code] : $state_code);
        return $address;
    }
    $country = new WC_Countries();
    $formatted_address = $country->get_formatted_address(array('address_1' => $street_1, 'address_2' => $street_2, 'city' => $city, 'postcode' => $zip, 'state' => $state_code, 'country' => $country_code));
    return apply_filters('dokan_get_seller_address', $formatted_address, $profile_info);
}