-
목차
🧠 왜 커스텀 포스트 타입(CPT)이 필요한가?
워드프레스는 본래 블로그 중심 플랫폼이지만,
이벤트, 포트폴리오, 리뷰, 강의, FAQ, 제품 등
다양한 콘텐츠를 구조화된 데이터베이스 형태로 관리할 수 있도록
커스텀 포스트 타입(CPT)을 제공합니다.post, page 외에, 나만의 콘텐츠 타입을 만들어
테이블처럼 정리하고, 출력하고, 검색할 수 있습니다.
✅ 커스텀 포스트 타입 예시
콘텐츠 유형포스트 타입포트폴리오 portfolio 강의 콘텐츠 course 제품 카탈로그 product 고객 리뷰 review 직원 정보 team
🔧 커스텀 포스트 타입 등록하기
기본 코드 구조 (functions.php 또는 플러그인 내부)
php복사편집function register_my_cpt() { register_post_type('portfolio', array( 'labels' => array( 'name' => '포트폴리오', 'singular_name' => '포트폴리오', ), 'public' => true, 'has_archive' => true, 'rewrite' => array('slug' => 'portfolio'), 'supports' => array('title', 'editor', 'thumbnail', 'excerpt'), 'menu_icon' => 'dashicons-portfolio', )); } add_action('init', 'register_my_cpt');📌 이제 관리자에 **‘포트폴리오’**라는 메뉴가 생기며, 별도 아카이브 URL도 생성됩니다.
🧩 커스텀 필드: 콘텐츠에 ‘속성’을 부여하자
- 강의 콘텐츠에 “수강 시간”, “강사명”
- 제품 포스트에 “가격”, “재고”, “SKU”
- 리뷰 포스트에 “평점”, “구매 링크”
👉 이것이 커스텀 필드의 역할입니다.
콘텐츠를 속성 기반의 데이터베이스처럼 구조화할 수 있게 합니다.
✅ ACF (Advanced Custom Fields) 플러그인 활용
설치 후 설정 흐름
1️⃣ ACF → 필드 그룹 생성
2️⃣ 필드 추가 (텍스트, 숫자, 날짜 등 다양)
3️⃣ ‘포스트 타입 = portfolio’일 때 표시되도록 조건 설정
4️⃣ 템플릿에서 출력출력 예시 (테마 파일 내부)
php복사편집<?php $client_name = get_field('client_name'); $project_date = get_field('project_date'); ?> <p>클라이언트: <?= esc_html($client_name) ?></p> <p>작업일: <?= esc_html($project_date) ?></p>📌 get_field()는 ACF 전용 함수이며, 필드 이름은 슬러그와 동일
🧱 커스텀 포스트 + 필드 설계 전략 예시
포스트 타입필드 이름필드 유형course duration 숫자 (시간 단위) course instructor 텍스트 portfolio client_name 텍스트 product price 숫자 review rating 슬라이더 또는 select 이렇게 설계하면 워드프레스를 마치 CMS + DB 시스템처럼 활용할 수 있습니다.
🔎 아카이브/상세 페이지에 CPT 데이터 출력하기
아카이브 템플릿 예시 (archive-portfolio.php)
php복사편집<?php while(have_posts()): the_post(); ?> <h2><?php the_title(); ?></h2> <p><?php the_excerpt(); ?></p> <p>클라이언트: <?= esc_html(get_field('client_name')) ?></p> <?php endwhile; ?>싱글 템플릿 예시 (single-portfolio.php)
→ 상세 페이지에 커스텀 필드 정보와 이미지, 링크 배치
💡 팁: CPT + 필드를 검색, REST API, 조건 출력과 연결하라
- pre_get_posts 필터로 CPT 검색 결과 포함
- REST API에 커스텀 필드 노출 (register_rest_field)
- Elementor, Gutenberg에서 CPT 블록 제작도 가능
✅ 구조화 콘텐츠 설계 체크리스트
항목완료 여부register_post_type()로 CPT 등록 ✅ / ❌ ACF로 필드 그룹 생성 및 연결 ✅ / ❌ 커스텀 템플릿에서 필드 출력 완료 ✅ / ❌ REST API 또는 쿼리에 CPT 포함 처리 ✅ / ❌ 관리자 UI 최적화 (아이콘, 컬럼 등) ✅ / ❌ '워드프레스' 카테고리의 다른 글
🧠 워드프레스는 "조건별로" 템플릿을 불러옵니다 (1) 2025.04.26 🧠 왜 직접 플러그인을 만들어야 할까? (2) 2025.04.25 🧠 왜 DB 구조를 이해해야 하는가? (2) 2025.04.25 🔄 AJAX가 필요한 이유 (1) 2025.04.25 🔗 워드프레스 REST API란? (0) 2025.04.24 🧠 functions.php란 무엇인가? (3) 2025.04.24 📱 워드프레스를 앱처럼 운영하는 3단계 전략 (2) 2025.04.23 💬 워드프레스와 챗봇 연동 전략 (1) 2025.04.22