JetEngine CPT Register Query Var 와 검색엔진 인덱싱

JetEngine의 CPT (Custom Post Type) 설정과 관련하여 “Register Query Var”와 “Rewrite” 옵션 설정은 URL 구조와 검색엔진 인덱싱에 영향을 미칩니다. 각각의 설정이 가지는 의미를 정리하고, 어떻게 활용할 수 있는지 살펴보겠습니다.

Post Type 이란

“Post type”은 워드프레스에서 콘텐츠의 종류(type)를 구분하는 개념입니다.

워드프레스를 컨텐츠 창고라고 보면, “Post type”은 창고 안의 ‘콘텐츠 상자 종류’라고 생각하면 됩니다. 워드프레스는 아래와 같이 Post Type 을 내부적으로 구분하여 사용하고 있습니다.

가장 기본적으로 “Page” 와 “Post” 로 나누고, “Page”는 웹 페이지에 대한 HTML 코드를 저장하도록 하고, “Post” 는 블로그, 기사 등 내용을 작성하여 웹페이지의 Header/Footer 디자인 사이에 표현하는 통상의 ‘글’ 을 저장하는 목적으로 용도를 구분하여 사용하지요. 우커머스를 설치하여 워드프레스로 쇼핑몰을 운영한다고 하면, ‘product’ 라는 Post Type 을 추가로 정의하여 사용합니다.

  • 📄 post = 블로그 글 상자
  • 📃 page = 정적인 정보(소개/문의 등) 상자
  • 📷 attachment = 이미지나 파일 상자
  • 🛒 product = 쇼핑몰 상품 상자 (예: WooCommerce)
  • 🎬 movie = 영화 정보 상자 (사용자 정의 CPT)

사이트 운영자 혹은 개발자가 다른 목적으로 Post Type 을 정의하여 사용할 수 있을까 라는 의문이 들지 않나요? 다른 목적으로 활용할 Post Type 을 정의하여 사용할 수 있는 데 이것을 ‘Custom Post Type (CPT)’ 라고 합니다.

Custom Post Type 이란

왜 필요한가요? (Why)

기본 워드프레스는 글(Post)페이지(Page) 두 가지 유형의 콘텐츠를 제공합니다. 하지만 다음과 같은 경우엔 이걸로는 부족합니다:

  • 블로그 글이 아닌 제품, 포트폴리오, 이벤트, 리뷰, 영화, 강의 등의 콘텐츠를 다루고 싶을 때
  • 각각의 콘텐츠 유형에 고유한 필드, 디자인, 관리 방식이 필요할 때
  • 특정 콘텐츠를 분리해서 관리, 분류, 출력하고 싶을 때

📌 예시:

  • 영화 리뷰 사이트 → 영화(Movie) CPT, 배우(Actor) CPT 생성
  • 교육 플랫폼 → 강의(Lesson) CPT, 강사(Teacher) CPT
  • 회사 웹사이트 → 포트폴리오(Portfolio), 프로젝트(Project)

누가 사용하나요? (Who)

  • 웹 개발자 또는 웹 에이전시
  • 워드프레스 커스터마이징이 필요한 디자이너
  • 콘텐츠를 세분화하고자 하는 마케팅 팀
  • 기능 중심 웹사이트를 만들고자 하는 스타트업 또는 기업

언제 사용하나요? (When)

  • 사이트에 복수의 콘텐츠 유형이 필요할 때
  • 각 콘텐츠마다 커스텀 필드, 템플릿, 분류 기준이 달라야 할 때
  • REST API, 커스텀 관리자 화면 등과 연동해 전문적인 기능을 만들 때
  • Elementor, JetEngine, ACF 등으로 고급 사이트를 만들 때

어떻게 정의하나요

웹 개발자들은 다양한 방식으로 정의할 수 있습니다. CPT 는 WordPress 가 데이터 저장에 사용하는 database 구조를 그대로 사용하면서, wp_posts 라는 테이블의 post_type 필드에 기록하는 값을 ‘page’, ‘post’, ‘attachment’ 등과 같이 구분만 해 주면 되기 때문입니다.

보통은 잘 만들어진 플러그인을 사용하면 됩니다. COOSS.NET 에서는 Crocoblock JetEngine 을 사용하여 간편하게 Custom Post Type 을 정의하여 사용하고 있습니다.

예를 들어, 저희 COOSS.NET 에서는, ‘코인에 대한 AI 매매 의견’ 을 ‘buysell-coin’ 이라는 이름으로 별도의 Post Type 으로 정하여 사용하고 있습니다. [ BTC AI 매매 – 2025-03-28 매수/매도/홀딩 결정 이유 ] 와 같이 보통의 글과는 다른 형태로 표시되도록 하고자 하는 목적과, 별도의 Post Type 으로 지정하는 것이 관리하기도 편하기 때문입니다.

아래는 JetEngine 에서 CPT 를 정의하는 대화창입니다.

image 14

JetEngine의 Post Type 설정 이해하기

이 번 글에서는 커스텀 포스트 타입(CPT)을 설정할 때, “Register Query Var” 와 “Rewrite” 설정들에 대해 더 깊이 알아보겠습니다.

image 15

Register Query Var란?

Register Query Var는 WordPress의 내부 쿼리 시스템과 연결됩니다. URL 쿼리 문자열에서 특정 변수를 통해 포스트 타입을 식별하거나 필터링할 수 있도록 합니다.

이 옵션이 활성화되어 있을 때, URL 요청을 통해 CPT를 조회하는 것이 가능합니다.

예를 들어, ? 뒤에 변수값(query variable)을 넣는 형태의 아래 주소 형식으로 글을 표시할 수 있게 됩니다.

https://example.com/?your_post_type_slug=post_slug

COOSS.NET 페이지를 예로 들면, 아래와 같은 형태의 주소도 작동을 하게 됩니다. (클릭해 보세요).

https://cooss.net/?buysell-coin=btc-25-03-28-02-00

JetEngine의 설정에서 Register Query Var

활성화 시의 영향

Register Query Var를 활성화하면:

  • 내부 쿼리 시스템에서 주소창에 해당 포스트 타입을 인식합니다.
  • 이 덕분에 URL 파라미터를 사용한 직접 쿼리나 WP_Query를 이용한 접근이 가능해집니다.

PHP 코드로 다음과 같이 호출할 수 있게 되고,

$query = new WP_Query( [
'my_custom_post_type' => 'post_slug'
] );


주소창에서는, 아래와 같은 주소로 해당 글을 표시할 수 있게 됩니다.

https://cooss.net/?buysell-coin=btc-25-03-28-02-00

비활성화 시의 영향

비활성화되면 해당 포스트 타입에 대한 쿼리 변수를 사용할 수 없게 되어, URL 또는 WP_Query를 통한 직접 쿼리가 불가능해 집니다. 일반적으로 REST API를 통해서만 접근할 수 있는 CPT라면 query_var 등록이 필요하지 않을 수 있습니다.

Rewrite 설정이란?

Rewrite 옵션은 쉽게 기억할 수 있는 형태의 URL을 생성하는 데 사용됩니다. 이를 통해 검색 엔진과 사용자에게 친숙한 URL 구조를 제공합니다.

예를 들어, Rewrite 설정이 활성화되면, 아래와 같은 경로로도 접근할 수 있게 됩니다.

https://domain.com/post_type_slug/post_slug

Rewrite 설정의 필요성

Rewrite 설정이 없는 경우, 기본적으로 `https://domain.com/?post_type=post_type_slug&p=post_id`와 같은 URL만을 사용해야 하는데, 이는 검색엔진 최적화 측면에서 불리하기 때문입니다.

COOSS.NET 에서도 처음에는 이 옵션을 활성화 시키지 않았습니다. 그런데, 검색엔진에 인덱싱 된 페이지를 보니, 검색엔진은 ‘https://domain.com/post_type_slug/post_slug` 와 같이 기록을 하고 있는 것을 알게 되었습니다. 그런데, 이 주소로 클릭하면, 워드프레스가 주소를 인식하지 못하여 없는 페이지라는 오류 메시지를 표시하더군요. 지금은 Rewrite 설정도 활성화 시킴으로써, 쿼리 형태의 주소와 검색엔진이 인덱싱 하는 형태의 주소에 대해 모두 정상적으로 페이지가 출력되고 있습니다.

두 가지 설정의 종합적 활용

검색엔진이 인덱싱 하는 방식에서의 오류를 확인하면서, 각각의 설정을 어떻게 조합하면 좋을지를 이해하는 것도 필요하다고 생각되어 정리해 보기로 하였습니다.

개념 요약

  • Register Query Var : /?post_type_slug=slug-name 형식의 쿼리스트링 접근 허용
  • Rewrite : /post_type_slug/slug-name 형식의 퍼머링크(URL 재작성) 허용

설정 조합 (Query Var + Rewrite)

  • On + On : 쿼리 방식 + 계층적 Permalink 지원 (대부분의 공개 CPT 에 적합)
  • Off + On : 쿼리 방식 + 계층적 Permalink 지원 (공개 웹사이트에 적합)
  • On + Off : 쿼리 방식 + 계층적 Permalink 지원 (개발용, 테스트용 CPT)
  • Off + Off : 쿼리 방식 + 계층적 Permalink 지원 (관리자용, 시스템 내부용 CPT)

이 표를 참고하여, 각 사이트의 필요에 맞춰 설정을 조정할 수 있습니다.

상황에 따른 추천 (Query Var + Rewrite)

1. 블로그, 포트폴리오, 상품, 공지사항 등 공개 콘텐츠
  • On + On
  • 사용자 친화적 URL + 유연한 쿼리 접근 가능 → 검색엔진 인덱싱도 자연스럽게 작동
https://yourdomain.com/portfolio/my-design
https://yourdomain.com/?portfolio=my-design
2. 어드민 전용 자료 저장용 CPT
  • Off + Off
  • 시스템 로그, 내부 API 결과 저장용 CPT 등
    • 외부 접근 차단
    • REST API 또는 백엔드 전용으로만 사용
3. REST API 전용 CPT
  • Off + 상황에 따라 선택
  • REST로만 활용될 경우, 불필요한 경로 공개 방지

결론적으로 대부분의 일반적인 공개용 CPT에서는 둘 다 On으로 설정하는 것이 가장 유연하고 안전하며, 내부 전용 혹은 API 전용 CPT라면 목적에 따라 비활성화하여 불필요한 노출을 차단하는 것이 보안 및 성능상 더 좋겠습니다.

주의사항

Rewrite On 으로 설정한 후에는 고유주소(Permalink) 설정 페이지 에서 아무것도 변경하지 않은 상태에서 “변경사항 저장” 을 한 번 클릭해 주어야 합니다.

위 설정은 JetEngine 에서 지정하긴 하지만, Rewrite 규칙의 적용은 워드프레스 관리를 따르도록 하고 있기 때문이며, 이렇게 한 이후에야 rewrite 규칙이 WordPress에 등록됩니다.

 

[Register Query Var] : WordPress URL의 쿼리 문자열에서 특정 변수를 통해 포스트 타입을 식별하는 기능.
[Rewrite] : 사용자 친화적인 형태로 URL 구조를 변경하는 기능.
[404 오류] : 요청한 페이지가 존재하지 않을 때 발생하는 오류 메시지.
[Google Search Console] : 웹사이트의 성능과 인덱싱 상태를 모니터링하는 구글의 도구.

Updated : March 28, 2025
{{ reviewsTotal }}{{ options.labels.singularReviewCountLabel }}
{{ reviewsTotal }}{{ options.labels.pluralReviewCountLabel }}
{{ options.labels.newReviewButton }}
{{ userData.canReview.message }}
This site is registered on wpml.org as a development site. Switch to a production site key to remove this banner.