Estricto a 1 país solo en la página de pago con wordpress y woocommerce

2 minutos de lectura

Estoy usando wordpress y woocommerce. En la página de pago, ¿cómo restrinjo a solo 1 país? Di Australia.

ingrese la descripción de la imagen aquí

Hola, puede restringir a un solo país mediante la configuración del complemento

configuración del complemento de woocommerce

puedes encontrar en Woocommerce->Ajustes-> Pestaña General

Simplemente anule la clase por gancho,

function woo_override_checkout_fields_billing( $fields ) { 

    $fields['billing']['billing_country'] = array(
        'type'      => 'select',
        'label'     => __('My New Country List', 'woocommerce'),
        'options'   => array('AU' => 'Australia')
    );

    return $fields; 
} 
add_filter( 'woocommerce_checkout_fields' , 'woo_override_checkout_fields_billing' );

function woo_override_checkout_fields_shipping( $fields ) { 

    $fields['shipping']['shipping_country'] = array(
        'type'      => 'select',
        'label'     => __('My New Country List', 'woocommerce'),
        'options'   => array('AU' => 'Australia')
    );

    return $fields; 
} 
add_filter( 'woocommerce_checkout_fields' , 'woo_override_checkout_fields_shipping' );

Esto lo ayudará a mostrar solo 1 país en el menú desplegable. Agregue este código a functions.php en el tema.

avatar de usuario
hormigaz

También quizás desee vender a varios países, pero también desea mostrar SOLO el país desde donde se conecta el usuario (geolocalizado desde la dirección IP). Así, de esta forma, un usuario francés solo verá Francia en el menú desplegable de países, un usuario australiano solo verá Australia en el menú desplegable de países y así sucesivamente… Aquí está el código:

/**
 * @param array $countries
 * @return array
 */
function custom_update_allowed_countries( $countries ) {

    // Only on frontend
    if( is_admin() ) return $countries;

    if( class_exists( 'WC_Geolocation' ) ) {
        $location = WC_Geolocation::geolocate_ip();

        if ( isset( $location['country'] ) ) {
            $countryCode = $location['country'];
        } else {
            // If there is no country, then return allowed countries
            return $countries;
        }
    } else {
        // If you can't geolocate user country by IP, then return allowed countries
        return $countries;
    }

    // If everything went ok then I filter user country in the allowed countries array
    $user_country_code_array = array( $countryCode );

    $intersect_countries = array_intersect_key( $countries, array_flip( $user_country_code_array ) );

    return $intersect_countries;
}
add_filter( 'woocommerce_countries_allowed_countries', 'custom_update_allowed_countries', 30, 1 );

  • Olvidó agregar $ a countryCode en $user_country_code_array = array( countryCode );

    – Adrián González

    30 oct 2020 a las 15:54

¿Ha sido útil esta solución?