Technote

Themes & plugins Practical

ACF 무료판으로 반복 필드를 설계하는 방법

Repeater 가 없어서 막힌 게 아니라, 반복 데이터를 필드에 넣으려던 설계가 막힌 것입니다. 반복은 CPT 로 승격하면 정렬 · 검색 · 자동화가 코어 기능으로 풀립니다.

ACF Pro 의 Repeater 는 편리하지만, 라이선스가 없다고 콘텐츠 모델이 막히지는 않습니다. 오히려 무료판의 제약이 더 튼튼한 구조를 강제하는 경우가 많습니다. 원칙은 세 줄입니다: 반복은 CPT, 중첩은 Group, 전역은 코드.

Repeater 가 저장되는 방식부터

Repeater 는 행마다 items_0_title · items_1_title 같은 인덱스 키로 포스트메타에 흩어집니다. 이 구조의 대가는 명확합니다.

반복 데이터의 자리는 필드가 아니라 포스트다

승격 예시 — FAQ

“FAQ 페이지에 질문 반복 필드” 대신 faq 포스트 타입을 등록하고, 질문 하나 = 포스트 하나로 둡니다. 노출 순서는 menu_order, 조립은 페이지 템플릿의 쿼리가 담당합니다.

register_post_type( 'faq', [
    'public'             => false,   // 단독 URL 없음 — 얇은 문서 양산 방지
    'show_ui'            => true,
    'publicly_queryable' => false,
    'supports'           => [ 'title', 'editor', 'page-attributes' ],
] );

이렇게 두면 wp post create --post_type=faq 로 생성이 자동화되고, 검색 · REST · 정렬이 전부 코어 기능으로 해결됩니다. 반복 필드였다면 이 셋을 각각 우회 구현해야 했을 일입니다.

나머지 두 원칙

  • 중첩은 Group — “한 덩어리의 하위 필드”(예: 지표의 before/after)는 무료판에 있는 Group 필드로 충분합니다.
  • 전역은 코드 — Options Page 대신 테마의 config PHP 파일. 설정이 git 에 남아 diff · 리뷰 · 이관이 전부 공짜가 됩니다.

무료판에 Repeater 를 이식해 준다는 서드파티 플러그인은 피하세요 — ACF 내부 API 에 의존해 업데이트마다 깨지는 계열입니다. 구조로 풀 수 있는 문제를 의존성으로 풀지 않습니다.

플러그인을 하나 늘리기 전의 판단 기준은 업데이트가 멈춘 플러그인 판별과 이어집니다. 콘텐츠 구조 설계까지 포함한 사이트 정비는 최적화 지원 사업에서 상담할 수 있습니다.

More on this topic

All technotes

Themes & plugins Intro

When a custom post type earns its place

Pages are usually enough. But the point where they stop working is quite distinct — and the signal is not how many items you have, it is whether…

Product planners 6 min read

Themes & plugins Intro

Why updates break — and why it is rarely core

If you are postponing because the last update broke something, it is worth asking what actually broke. Naming the cause correctly changes how you prepare for the next…

Site operators 7 min read

₩270,000 · Join the program