sourcecode

워드프레스와 woocommerce가 포함된 체크아웃 페이지에서만 1개 국가에 한정

copyscript 2023. 3. 20. 23:26
반응형

워드프레스와 woocommerce가 포함된 체크아웃 페이지에서만 1개 국가에 한정

워드프레스와 우코머스를 사용하고 있습니다.체크아웃 페이지에서 한 국가만 제한하려면 어떻게 해야 하나요?호주라고 해.

여기에 이미지 설명 입력

안녕하세요 플러그인 설정으로 한 국가만 제한할 수 있습니다.

woocommerce 플러그인 설정

Woocommerce -> Settings -> General 탭에서 찾을 수 있습니다.

훅으로 수업을 무시하면

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' );

이렇게 하면 드롭다운에 하나의 국가만 표시됩니다.이 코드를 함수에 추가합니다.php를 테마로 합니다.

또, 복수의 나라에 판매하고 싶은 경우도 있습니다만, 유저가 접속하고 있는 나라(IP 주소로부터 위치)만을 표시하고 싶은 경우도 있습니다.따라서 프랑스 사용자는 국가 드롭다운에 프랑스만 표시되고 호주 사용자는 국가 드롭다운에 호주만 표시됩니다.코드는 다음과 같습니다.

/**
 * @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 );

언급URL : https://stackoverflow.com/questions/45385808/strict-to-1-country-only-in-checkout-page-with-wordpress-and-woocommerce

반응형