prosource

WooCommerce: 체크아웃 시 한 개의 주/시로 사전 선택 및 제한

probook 2023. 3. 4. 15:00
반응형

WooCommerce: 체크아웃 시 한 개의 주/시로 사전 선택 및 제한

한 도시에만 파는 가게를 차리고 있어요.도시 옵션을 미리 채워진 필드로 제한할 방법을 찾고 있습니다.

이미 국가를 제한했고 다음 코드를 사용하고 있습니다.functions.php:

add_filter( 'default_checkout_country', 'change_default_checkout_country' );
add_filter( 'default_checkout_state', 'change_default_checkout_state' );

function change_default_checkout_country() {
  return 'PK'; // country code
}

function change_default_checkout_state() {
  return 'SD'; // state code
}

그리고 다음 항목을 사용하여 상태를 미리 선택했습니다.

add_filter( 'woocommerce_states', 'bbloomer_custom_woocommerce_states' );

function bbloomer_custom_woocommerce_states( $states ) {
$states['PK'] = array(
'SD' => 'Sindh',
);
return $states;
}

하지만... 이제 도시가 오고 난 길을 잃었어.사용해보았습니다.$fields['billing']['billing_city']게다가$fields['billing']['billing_city']['value']헛수고다.

손님은 카라치로 한정해 주셨으면 합니다.저는 WooCommerce 필터에 대해 잘 모르기 때문에 도움이 필요합니다.

woocommerce 3 및 필터 훅은 폐지되어 치환되었습니다.

또, 마지막 기능에서는, 1개의 도시만을 제한하고 싶은 경우는, 그 도시를 주의 배열에 포함시키지 말아 주세요.대신 가능한 값은 하나만 반환해야 합니다.

그럼 이게 네 코드야

// default checkout country
add_filter( 'default_checkout_billing_country', 'change_default_checkout_country' );
add_filter( 'default_checkout_shipping_country', 'change_default_checkout_country' );
function change_default_checkout_country() {
    return 'PK'; // country code
}

// default checkout state
add_filter( 'default_checkout_billing_state', 'change_default_checkout_state' );
add_filter( 'default_checkout_shipping_state', 'change_default_checkout_state' );
function change_default_checkout_state() {
    return 'SD'; // state code
}

// Setting one state only
add_filter( 'woocommerce_states', 'custom_woocommerce_state', 10, 1 );
function custom_woocommerce_state( $states ) {
    // Returning a unique state
    return array('PK' => array('SD' => 'Sindh'));
}

// Only one city at checkout
add_filter( 'woocommerce_checkout_fields', 'custom_checkout_fields', 10, 1 );
function custom_checkout_fields( $fields ) {

    $fields['billing']['billing_city']['type'] = 'select';
    $fields['billing']['billing_city']['options'] = array('Karachi' => 'Karachi');
    $fields['shipping']['shipping_city']['type'] = 'select';
    $fields['shipping']['shipping_city']['options'] = array('Karachi' => 'Karachi');

    return $fields;
}

코드가 기능합니다.php 파일 또는 임의의 플러그인 파일에 있는 활성 자식 테마(또는 테마)입니다.

이 코드는 테스트되었으며 wooCommerce 버전 3 이상에서 작동합니다.

위의 코드를 추가하고 저장하면,WooCommerce > Settings > General위치를 다음과 같이 설정하려면:

여기에 이미지 설명 입력

그러면 체크아웃 시 다음과 같은 정보가 제공됩니다.

여기에 이미지 설명 입력

두 드롭다운 모두 값이 하나뿐입니다.기대했던 것을 얻을 수 있습니다.

언급URL : https://stackoverflow.com/questions/45444618/woocommerce-pre-select-and-restrict-to-one-state-and-city-on-checkout

반응형