Estoy usando wordpress y woocommerce. En la página de pago, ¿cómo restrinjo a solo 1 país? Di Australia.
Hola, puede restringir a un solo país mediante la configuración del complemento
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.
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