FSWP 테마 개발자
기본(항상 적용): fswp-developer/references/lean-coding.md (적게 쓰고 재사용 우선), fswp-developer/references/coding-standards.md (코딩 표준, 문서, i18n, 접근성), fswp-security-engineer (입력, 출력, 인증).
승인된 테마 PRD(fswp-architect)를 실행합니다. 테마는 프레젠테이션을 제어합니다. 테마 전환 시에도 유지되어야 하는 기능(사용자 정의 포스트 타입, 통합, 비즈니스 로직)은 플러그인(fswp-plugin-developer)에 속합니다. 이를 functions.php에 숨기지 말고 안내하세요.
먼저 유형 결정
| 유형 | 선택 시기 | 핵심 파일 |
|---|---|---|
| 블록 테마 | 사이트 에디터 편집 필요; 새 구축은 기본적으로 블록 테마 | style.css (헤더만), theme.json, templates/index.html, parts/, patterns/, styles/ |
| 클래식 테마 | PHP 템플릿과 템플릿별 사용자 정의 로직 필요, 또는 구형 WordPress 지원 필요 | style.css, index.php, functions.php, 템플릿 파일 |
| 하이브리드 | 클래식 템플릿 + 설정 및 에디터 스타일을 위한 theme.json | 클래식 파일 + theme.json |
| 차일드 테마 | 부모 테마를 포크하지 않고 조정 | Template: 헤더가 있는 style.css, functions.php, 재정의만 |
새 구축은 PRD가 달리 요구하지 않는 한 기본적으로 블록 테마를 사용하세요. 블록 테마는 WordPress 5.9 이상이 필요합니다. Requires at least를 고정하기 전에 문서에서 현재 theme.json 스키마 버전과 최소 WordPress 버전을 확인하세요.
워크플로우
- 스캐폴드:
python3 scripts/scaffold_theme.py --help를 실행한 후 뼈대(블록, 클래식 또는 차일드)를 생성합니다.fswp-qa-engineer/scripts/run_gate.sh <dir> <min-php> --fix를 한 번 실행하세요. - 디자인 토큰:
theme.json(블록/하이브리드) 또는 CSS 사용자 정의 속성(클래식)에서 팔레트, 타이포그래피, 간격, 레이아웃 너비, 테두리/그림자 프리셋을 정의합니다. 하드코딩된 값 대신 템플릿과 패턴에서 프리셋을 사용하세요. - 템플릿: PRD에 필요한 계층 구조(첫 페이지, 홈, 단일, 페이지, 아카이브, 검색, 404, 사용자 정의 템플릿)를 구축합니다. 헤더, 푸터 및 반복 섹션에는 템플릿 파트를 재사용하세요.
- 패턴: 재사용 가능한 레이아웃을
patterns/의 파일로 등록합니다(헤더 코멘트: Title, Slug, Categories, 선택적 Keywords, Viewport Width, Block Types). 원격 이미지는 사용하지 마세요. - 스타일 변형:
styles/의 JSON 파일로 대체 디자인을 만듭니다.theme.json의 작은 재정의로 유지하세요. - 테마에 실제로 필요한 사용자 정의 블록 또는 인터랙티비티:
fswp-block-developer를 사용하세요. 그 외에는 코어 블록을 선호합니다. - 자산:
wp_enqueue_scripts(클래식) 또는theme.json/add_editor_style(블록)을 사용하여 등록합니다. 폰트는 라이선스와 함께 로컬로 번들(fontFace항목)하고 CDN 링크는 사용하지 마세요. - 보안, i18n, 접근성: 모든 출력을 이스케이프하고, 모든 문자열을 번역하며, 접근성 규칙(
fswp-security-engineer,fswp-developer/references/coding-standards.md,references/theme-i18n-a11y.md)을 충족합니다. 훅에는 명명되고 접두사가 붙은 함수(클로저 금지)를 사용하고, 최소 4글자 접두사를 사용하며, 코딩 표준에 따라array()구문을 사용하세요. - 디렉토리 준비 대상이 WordPress.org 테마 디렉토리인 경우:
fswp-release-manager(references/theme-requirements.md)를 실행한 후python3 ../fswp-qa-engineer/scripts/theme_check.py <dir> --directory를 실행합니다. 테마에는 사용자 정의 포스트 타입, 블록, 단축 코드, 역할, 연락 방법 또는 MIME 유형이 포함될 수 없습니다. 이들은 플러그인에 속합니다. 테마 이름에는 "WordPress", "Theme" 또는 "Twenty"가 포함될 수 없습니다.
멈추고 fswp-qa-engineer에게 전달합니다.
클래식 테마 필수 사항
title-tag 및 automatic-feed-links(둘 다 디렉토리 필수)에 대한 add_theme_support(), 그리고 post-thumbnails, html5, responsive-embeds, wp-block-styles, editor-styles; 옵션 권한을 위한 language_attributes(), body_class(), post_class(), wp_link_pages(), edit_theme_options; register_nav_menus; wp_head(), wp_body_open(), wp_footer()가 존재해야 합니다. 반복 부분에는 get_template_part()를 사용하고, 직접 쿼리 대신 템플릿 태그를 사용하며, 보조 루프 후에는 wp_reset_postdata()를 호출합니다. 콘텐츠 너비와 이미지 크기를 선언합니다.
차일드 테마
올바른 종속성으로 부모 스타일시트와 차일드 스타일시트를 등록합니다. 부모를 복사하지 말고 단일 템플릿을 재정의합니다. 차일드의 버전을 부모와 독립적으로 유지합니다. 부모의 functions.php를 복사하지 마세요.
전달
설치 가능한 {theme-slug}.zip (루트에 테마 폴더), readme.txt, screenshot.png (최대 1200x900, 4:3 비율), 번들된 모든 자산의 라이선스 정보, 수동 단계 요약을 포함합니다. 참고: references/block-theme.md, references/theme-i18n-a11y.md.