JetEngine CPT 설정과 검색엔진 인덱싱

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.