블록 테마에서 버튼 모양을 에디터에서 바로 고르게 만들고 싶었다.
내가 참고한 테마는 그 방식을 깔끔하게 보여준다.
여기서는 비개발자 기준으로 어떤 파일을 어디서 어떻게 고치면 되는지
최소한의 코드만 보고 이해할 수 있게 정리했다.

핵심 원리 한 줄 요약
에디터에 스타일 이름을 등록했다.
워드프레스가 자동으로 클래스를 붙였다.
그 클래스를 CSS로 꾸몄다.
끝이다.
- 등록 파일:
functions.php
- 스타일 파일:
style.css
또는theme.json
- 결과: 에디터 “스타일” 패널에서 선택 가능해짐
1) 어디를 고치나
A. functions.php
테마 루트에 있다.
여기에 “스타일 이름”을 등록한다.
등록을 하면 에디터에 스타일 옵션이 생긴다.
버튼 블록, 소셜 링크 블록 등 원하는 블록을 지정한다.
B. style.css
(또는 theme.json
)
테마 루트에 있다.
여기에 “등록한 스타일 이름”과 같은 이름의 클래스를 잡아서 디자인을 써준다.
에디터와 프론트 양쪽에 보이게 하려면 Oaknut처럼 add_editor_style('style.css')
가 되어있다.
2) 파일별로 무엇을 하였나
A. functions.php
에서 한 일
- 버튼 블록에 “리본” 같은 스타일을 등록했다.
- 워드프레스가 자동으로
.is-style-스타일이름
클래스를 블록에 붙인다. - 에디터 오른쪽 “스타일” 탭에
사람이 고를 수 있는 옵션이 생긴다.
포인트: 이 단계는 “이름만 알려주는” 단계이다.
실제 모양은 CSS에서 만든다.
B. style.css
에서 한 일
.is-style-스타일이름
클래스를 잡았다.- 내부 요소(예:
.wp-block-button__link
)에
모양을 적용했다. - Oaknut은
clip-path
,box-shadow
같은 속성으로
다양한 형태를 만들었다.
포인트: 이름-클래스-스타일이 서로 이어져 있다.
이름을 등록하면 클래스가 붙고
그 클래스를 CSS가 꾸민다.
3) 버튼 말고도 가능한가
가능하다.
원리는 완전히 같다.
Oaknut은 버튼과 소셜 링크에
같은 스타일 이름을 등록해서
두 블록에 똑같이 적용했다.
다른 코어 블록에도 등록할 수 있다.
인용문, 구분선, 이미지, 커버 등 원하는 대로 확장한다.
- 방법은 동일하다.
functions.php
에서 해당 블록 이름으로 등록style.css
에서.is-style-스타일이름
디자인 작성
블록마다 내부 마크업이 달라서
버튼처럼 내부 링크 요소를 함께 지정해야 할 때가 있다.
Oaknut 소스를 보면 패턴이 보인다.
4) 실무 체크리스트
functions.php
에서 등록했는지 확인한다.
(스타일 이름과 라벨이 맞는지 본다)style.css
에서 같은 이름의 클래스를 잡았는지 본다.
(예:.is-style-my-style …
)- 에디터에서 스타일 패널이 보이는지 확인한다.
- 에디터와 프론트가 같이 보이는지 확인한다.
(add_editor_style('style.css')
가 있으면 된다) - 이름 규칙을 통일한다.
접두사(예:socialhub-
)를 정해서
여러 블록에 재사용하면 관리가 쉬워진다. - 스타일은 간결하고 재사용 가능하게 만든다.
색, 간격, 모서리 값은theme.json
“토큰”으로 통일하고
모양만 변형 스타일에서 바꾸면 일관성이 생긴다.
5) 최소 예시(참고용, 복붙 후 이름만 바꾸기)
아래는 흐름만 이해하기 위한 참고이다.
이름만 본인 테마 규칙에 맞게 바꾼다.
코드는 최소화했다.
functions.php
에 등록
(버튼과 소셜 링크 두 곳에 같은 이름을 등록했다는 가정)
// 버튼과 소셜 링크에 'Soft Bevel' 등록 (예시)
foreach ( array( 'core/button', 'core/social-links' ) as $block ) {
register_block_style( $block, array(
'name' => 'socialhub-soft-bevel',
'label' => __( 'Soft Bevel', 'socialhub' ),
) );
}
style.css
에 디자인
(같은 이름으로 클래스 지정)
/* 예시: 두 블록에 동일한 느낌 적용 */
.wp-block-button.is-style-socialhub-soft-bevel .wp-block-button__link,
.is-style-socialhub-soft-bevel .wp-block-social-link {
border: 2px solid currentColor;
box-shadow: 0 2px 0 currentColor, inset 0 2px 0 rgba(255,255,255,.2);
border-radius: 8px;
}
에디터에 즉시 반영되어야 한다.
만약 반영이 안 보이면 캐시를 지우거나add_editor_style('style.css')
가 있는지 확인한다.
6) 정리
functions.php
에서 스타일 이름 등록을 했다.- 워드프레스가 블록에 자동 클래스를 붙인다.
style.css
에서 그 클래스를 디자인했다.- 버튼뿐 아니라 다른 블록에도 같은 방식으로 확장했다.
theme.json
토큰으로 색·폰트·간격을 통일하면
변형 스타일만 바꿔도 전체 룩이 흔들리지 않는다.
이 방식은 간단하고 반복 가능하다.
상용 테마에서 통일성과 확장성을 동시에 얻을 수 있다.