Technote

테마 · 플러그인 입문

연재 테마를 브랜드로 만들기 8부 중 1부

부모 테마를 고치면 다음 업데이트에서 사라집니다

테마 업데이트는 폴더를 통째로 교체합니다. 그것이 정상 동작이고, 그래서 우리 수정은 교체되지 않는 자리에 있어야 합니다.

구매한 테마의 여백이 마음에 들지 않아 테마 폴더 안의 CSS 를 열어 고칩니다. 화면이 바뀌고, 문제가 해결된 것처럼 보입니다. 그리고 몇 주 뒤 업데이트 버튼을 누르는 순간 그 수정이 통째로 사라집니다. 디자이너가 워드프레스에서 처음 만나는 가장 허무한 경험입니다.

이것은 워드프레스의 결함이 아닙니다. 오히려 제대로 동작하고 있다는 증거입니다. 그 사실을 받아들이면 해야 할 일이 하나로 좁혀집니다 — 내 수정을 교체되지 않는 자리에 두는 것입니다.

업데이트가 실제로 하는 일

테마 업데이트는 파일을 하나씩 비교해 바뀐 줄만 반영하는 작업이 아닙니다. 기존 테마 폴더를 지우고 새 버전 폴더를 그 자리에 놓습니다. 그래야 제작자가 고친 보안 문제와 버그가 빠짐없이 도착합니다. 만약 업데이트가 우리 수정을 알아서 피해 간다면, 그것은 곧 어떤 파일은 옛 버전으로 남는다는 뜻이고, 취약점이 그 파일에 있었다면 그대로 남습니다.

그래서 관리자 화면의 테마 편집기로 부모 테마 파일을 고치는 것은 두 번 위험합니다. 업데이트에서 사라지고, 편집기 자체가 관리자 계정이 털렸을 때 서버에 코드를 심는 가장 빠른 통로이기도 합니다. 운영 사이트에서 이 편집기를 꺼 두는 것은 불편이 아니라 정상적인 설정입니다.

같은 수정인데 어디에 두었는가가 1년 뒤를 가른다

자식 테마가 하는 일

자식 테마는 별도의 테마 폴더인데, “나는 이 테마를 부모로 삼는다” 고 선언한 것뿐입니다. 워드프레스는 화면을 그릴 때 자식 테마를 먼저 보고, 없는 것만 부모에서 가져옵니다. 스타일도 템플릿도 같은 규칙을 따릅니다.

중요한 것은 자식 테마가 부모를 대체하지 않는다는 점입니다. 부모 테마는 그대로 설치돼 있고 계속 업데이트를 받습니다. 자식 테마는 그 위에 얹는 얇은 층이고, 우리가 소유하는 것은 그 층뿐입니다.

얇게 유지하는 것이 핵심입니다. 자식 테마에 넣은 파일 하나하나는 우리가 앞으로 관리할 파일이므로, 넣을 이유가 분명한 것만 넣습니다. 이 원칙은 4회차의 템플릿 오버라이드에서 다시 나옵니다.

그래서 어디에 무엇을 두는가

디자인 변경을 둘 수 있는 자리는 실제로 세 곳이고, 위에서부터 고르는 것이 좋습니다.

변경을 둘 수 있는 세 자리 — 위에서부터 고른다

테마가 색이나 로고에 대한 설정을 이미 제공한다면 그것을 씁니다. 설정으로 표현할 수 없는 디자인 결정만 자식 테마의 CSS 로 내려갑니다. 그리고 테마를 언젠가 바꿔도 남아야 하는 것(문의 폼, 구조화된 콘텐츠 같은 기능)은 테마가 아니라 플러그인 쪽에 있어야 합니다 — 테마와 함께 사라지면 안 되는 것들입니다.

테마 선택이 유지보수에 미치는 영향은 테마 · 플러그인 아카이브에서 더 다루고, 이미 부모 테마를 직접 고쳐 둔 사이트를 정리하면서 업그레이드까지 받고 싶다면 최적화 지원 사업에 그 작업이 포함됩니다.

다음 회차

다음 회차에서 자식 테마를 실제로 만듭니다. 파일 두 개면 끝나는데, 그중 스타일 로드 순서를 잘못 잡으면 CSS 를 아무리 써도 안 먹는 상태가 됩니다.

이 주제의 다른 글

노하우 목록으로

테마 · 플러그인 실무

편집 가능한 영역을 디자인 전에 정합니다

CMS 가 표현할 수 없는 디자인은 배포된 뒤에도 계속 협상 대상으로 남습니다. 어디까지 편집자가 바꿀 수 있는지를 먼저 정하면 그 협상 자체가 사라집니다.

디자이너 3분 읽기

테마 · 플러그인 입문

업데이트가 멈춘 플러그인을 판별하는 기준

마지막 업데이트 날짜 하나로는 방치를 판정할 수 없습니다. 판별 신호 다섯 개를 함께 보고, 대체 불가라면 격리 조건이라도 걸어야 합니다.

기획자 · 운영 · 관리자 2분 읽기

테마 · 플러그인 심화

JS 없이 만드는 상호작용과 그것을 안전하게 하는 규칙

details · :target · :focus-within · :has() · 스크롤 타임라인으로 상당수의 상호작용이 스타일시트 안에서 끝납니다. 안전하게 만드는 규칙은 하나입니다 — 기본값이 완성된 상태여야 합니다.

디자이너 6분 읽기

₩270,000 · 신청하기