WooCommerce에서 방문자 IP별 결제 안내 표시하기

저자:Lisa Farrell · 2026-06-01

WooCommerce 스토어는 방문자 지역에 따라 결제 안내를 다르게 표시할 수 있습니다. PHP가 컨테이너를 삽입하고 브라우저가 IP 정보를 받아 메시지를 갱신합니다.

API 설명

브라우저 측 호출은 방문자 IP를 확인하고 방문자의 IP, 국가, 지역, 도시를 반환합니다. 지역 콘텐츠 표시에 적합합니다.

{"ip":"185.220.236.7","country":"TW","region":"Taiwan","city":"Taipei"}

적용 시나리오

이 시나리오들은 IP 정보 인터페이스의 가치를 보여주며 서버 IP와 방문자 IP를 명확히 구분합니다.

  • 이 시나리오들은 IP 정보 인터페이스의 가치를 보여주며 서버 IP와 방문자 IP를 명확히 구분합니다.
  • WooCommerce에서 방문자 IP별 결제 안내 표시하기
  • API 설명
  • SEO 및 UX 권장사항

구현 로직

구현 전에 요청 주체를 확인해야 합니다. 서버 요청은 서버 IP를 반환하고 브라우저 요청은 방문자 IP를 반환합니다.

  • 구현 전에 요청 주체를 확인해야 합니다. 서버 요청은 서버 IP를 반환하고 브라우저 요청은 방문자 IP를 반환합니다.
  • 브라우저 측 호출은 방문자 IP를 확인하고 방문자의 IP, 국가, 지역, 도시를 반환합니다. 지역 콘텐츠 표시에 적합합니다.
  • 아래 예시는 모두 https://my.ipin.io/info를 직접 사용하며, 주석과 화면 문구도 현지화했습니다.
  • 기본 콘텐츠는 완전하고 읽을 수 있어야 하며, 지역 콘텐츠는 향상 요소로 사용해야 합니다. 검색엔진은 안정적인 콘텐츠를 수집하고, API 실패 시에도 페이지는 사용할 수 있습니다.

코드 예시

아래 예시는 모두 https://my.ipin.io/info를 직접 사용하며, 주석과 화면 문구도 현지화했습니다.

functions.php / plugin

function ipin_geo_payment_notice_html() {
    $box_id = 'ipin-payment-notice-' . wp_generate_uuid4();
    ob_start();
    ?>
    <div id="<?php echo esc_attr($box_id); ?>" class="woocommerce-info ipin-payment-notice">방문해 주셔서 감사합니다. 기본 콘텐츠입니다.</div>
    <script>
    (async function () {
      const el = document.getElementById("<?php echo esc_js($box_id); ?>");
      const defaultText = "방문해 주셔서 감사합니다. 기본 콘텐츠입니다.";
const contentMap = { TW: "대만 방문자 콘텐츠", US: "미국 방문자 콘텐츠", JP: "일본 방문자 콘텐츠" };
try {
  // 브라우저 측에서 /info를 호출하여 방문자 IP를 확인합니다.
  const info = await fetch("https://my.ipin.io/info").then(res => res.json());
  el.textContent = contentMap[info.country] || defaultText;
} catch (e) {
  // API 요청 실패 시 기본값을 유지합니다.
  el.textContent = defaultText;
}
    })();
    </script>
    <?php
    return ob_get_clean();
}
add_action('woocommerce_review_order_before_payment', 'ipin_geo_payment_notice');
function ipin_geo_payment_notice() { echo ipin_geo_payment_notice_html(); }
add_shortcode('geo_payment_notice', 'ipin_geo_payment_notice_shortcode');
function ipin_geo_payment_notice_shortcode() { return ipin_geo_payment_notice_html(); }

Shortcode

[geo_payment_notice]

SEO 및 UX 권장사항

기본 콘텐츠는 완전하고 읽을 수 있어야 하며, 지역 콘텐츠는 향상 요소로 사용해야 합니다. 검색엔진은 안정적인 콘텐츠를 수집하고, API 실패 시에도 페이지는 사용할 수 있습니다.

흔한 실수

다음 문제들은 글의 정확성, 코드 사용성, API 설명의 신뢰도에 영향을 줍니다.

  • 다음 문제들은 글의 정확성, 코드 사용성, API 설명의 신뢰도에 영향을 줍니다.
  • 기본 콘텐츠는 완전하고 읽을 수 있어야 하며, 지역 콘텐츠는 향상 요소로 사용해야 합니다. 검색엔진은 안정적인 콘텐츠를 수집하고, API 실패 시에도 페이지는 사용할 수 있습니다.
  • 구현 전에 요청 주체를 확인해야 합니다. 서버 요청은 서버 IP를 반환하고 브라우저 요청은 방문자 IP를 반환합니다.
  • 이 시나리오들은 IP 정보 인터페이스의 가치를 보여주며 서버 IP와 방문자 IP를 명확히 구분합니다.

정리

브라우저 측 호출은 방문자 IP를 확인하고 방문자의 IP, 국가, 지역, 도시를 반환합니다. 지역 콘텐츠 표시에 적합합니다.

자주 묻는 질문

아래 질문은 이 글의 구현 내용에 맞춰 별도로 작성되었으며 현재 주제와 직접 관련됩니다.

질문:Hook과 Shortcode는 각각 무엇을 하나요?
답변:Hook은 체크아웃에 자동 표시하고 Shortcode는 상품 페이지나 가격 페이지에 수동 삽입합니다.
질문:이 코드는 결제 수단을 변경하나요?
답변:아니요. 결제 안내만 표시하며 결제 게이트웨이를 활성화하거나 정렬하지 않습니다.
질문:왜 브라우저에서 API를 호출하나요?
답변:결제 안내가 방문자 IP에 따라 달라져야 하므로 브라우저 호출이 적합합니다.
질문:결제 안내에 링크를 넣을 수 있나요?
답변:네. 단, 관리자 입력 HTML은 안전한 태그만 허용하도록 필터링해야 합니다.
질문:체크아웃 캐시가 문제가 될 수 있나요?
답변:네. WooCommerce 체크아웃은 일반적으로 전체 페이지 캐시 대상이 아니어야 합니다.