Technote

AI 활용 실무

AI와 함께 워드프레스 코드 쓰기 — 컨텍스트가 결과를 가릅니다

같은 질문에도 결과가 크게 달라지는 이유는 대개 모델이 아니라 우리가 넘긴 정보입니다. 코드베이스의 규약 · 버전 제약 · 주변 코드를 함께 주면 일반론 대신 이 프로젝트의 코드가 돌아옵니다.

워드프레스 코드를 AI와 함께 쓰기 시작하면 두 가지를 금방 알게 됩니다. 하나는 훅 이름과 함수 시그니처처럼 외워 두기 번거로운 것이 확실히 빨라진다는 점이고, 다른 하나는 아무리 다시 물어도 우리 프로젝트와 상관없는 코드가 돌아오는 구간이 있다는 점입니다. 두 번째의 원인은 대개 모델이 아니라 우리가 넘긴 정보의 양입니다.

컨텍스트 없이 물으면 일반론이 돌아옵니다

“관리자에 설정 페이지 하나 추가해 줘” 라고만 물으면, 돌아오는 코드는 대체로 공식 문서 예제와 닮은 모양입니다. 함수 이름에 접두사가 없고, 옵션 키가 my_plugin_options 같은 이름이며, 저장 처리에는 우리가 쓰는 방식이 아니라 가장 널리 쓰이는 방식이 들어갑니다. 그 코드가 틀린 것은 아닙니다 — 다만 어느 프로젝트에도 정확히 맞지는 않습니다.

이때 흔히 하는 대응이 “더 큰 모델로 바꾸기” 나 “프롬프트를 길게 쓰기” 인데, 둘 다 핵심을 비껴갑니다. 모델은 우리 저장소를 본 적이 없습니다. 접두사 규약도, 지원해야 하는 PHP 버전도, 이 파일 위아래에 이미 있는 헬퍼도 모릅니다. 모르는 것을 잘 맞히게 만드는 방법은 없고, 알려 주는 방법만 있습니다.

함께 넘겨야 하는 네 가지

요청에 실어 보내야 하는 네 가지 — 하나라도 빠지면 결과가 프로젝트 밖으로 나간다

규약은 한 문단이면 충분합니다. 함수와 옵션 키의 접두사, 텍스트 도메인, 새 파일을 어디에 두는지, 출력 이스케이프를 어떻게 하는지. 이 네 줄만 있어도 돌아오는 코드의 이름들이 저장소와 같은 모양이 되고, 그 차이가 리뷰 시간의 대부분을 줄여 줍니다.

버전 제약은 빠뜨렸을 때 가장 늦게 발각되는 항목입니다. 로컬에서는 잘 돌던 코드가 지원 대상 PHP 에서 문법 오류를 내거나, 최근에 폐기된 함수를 쓰고 있거나, 반대로 우리 워드프레스 버전에는 아직 없는 함수를 부르는 경우가 생깁니다. “PHP 7.4 이상에서 동작해야 한다” 한 줄이 이 부류를 통째로 걸러 냅니다.

주변 코드는 가장 효과가 큽니다. 고칠 파일의 앞뒤를 그대로 붙여 주면, AI 는 이미 있는 헬퍼를 다시 만들지 않고 그것을 부릅니다. 반대로 파일을 안 보여 주면 같은 일을 하는 함수가 하나 더 생기고, 그 중복은 나중에 둘 중 하나만 고쳐지는 방식으로 문제를 만듭니다.

검증 방법은 요청을 검사 가능한 것으로 바꿉니다. “저장 후 wp option get acme_settings 에 값이 보이면 통과” 처럼 적어 두면, 결과물이 그 조건을 지향해 만들어지고 우리도 무엇을 확인할지 이미 알고 있습니다.

같은 요청, 두 가지 방식

실제로 어떻게 다른지는 나란히 두면 분명합니다.

[얇은 요청]
관리자 설정 페이지 추가해 줘

[맥락을 실은 요청]
- 플러그인 acme-core · 함수 접두사 acme_ · 텍스트 도메인 acme
- 지원 PHP 7.4 이상 (enum · readonly 사용 불가)
- 설정은 단일 옵션 배열 acme_settings, autoload=no
- 저장은 admin_post 훅 + check_admin_referer + current_user_can( 'manage_options' )
- 출력은 전부 esc_html / esc_attr 경유
- 붙일 위치: includes/class-settings.php (현재 내용 첨부)
- 확인: 저장 후 wp option get acme_settings 에 값이 보이면 통과

두 번째 요청의 각 줄은 결과 코드에서 그대로 확인할 수 있는 조건입니다. 이것이 좋은 컨텍스트의 판별법입니다 — 읽고 나서 “이 줄을 지켰는지 어떻게 아나” 에 답할 수 없다면, 그 줄은 아직 취향이지 요구가 아닙니다.

이 목록을 매번 손으로 쓸 필요는 없습니다. 규약과 제약은 프로젝트마다 거의 고정이므로 저장소에 문서로 두고 세션마다 함께 읽히는 편이 낫습니다. 저희도 그렇게 운영하고 있고, 그 문서의 구조는 따로 정리할 만큼 이야기가 깁니다.

받은 코드를 어떤 순서로 믿는가

컨텍스트를 잘 줘도 검토는 사라지지 않습니다. 다만 무엇을 먼저 볼지는 정해집니다.

병합 전 6줄 점검 — 위 넷은 확인 항목, 아래 둘은 실제로 자주 나온다

특히 존재하지 않는 훅 이름은 조용합니다. add_action() 은 아무 문자열이나 받아 주므로, 오타가 난 훅에 건 콜백은 에러 한 줄 없이 영원히 실행되지 않습니다. 훅을 새로 붙였으면 실제로 불리는지 한 번은 확인하고 넘어갑니다.

정리하면 AI 와의 협업에서 늘리는 것은 프롬프트 길이가 아니라 넘겨주는 사실의 양입니다. 규약 · 버전 · 주변 코드 · 검증 방법 네 줄이면 결과가 눈에 띄게 달라지고, 그 네 줄은 한 번 써 두면 계속 씁니다.

훅을 어디에 어떻게 거는지는 훅과 필터 제대로 쓰기 연재에서 다루고, AI 를 작업 흐름에 붙이는 다른 방법은 AI 활용 아카이브에 모여 있습니다. 코드가 아니라 운영 중인 사이트 자체를 정비해야 한다면 최적화 지원 사업이 업그레이드 · 성능 · 보안을 한 건으로 처리합니다.

이 주제의 다른 글

노하우 목록으로

AI 활용 심화

AI가 만든 코드의 보안 검토 — 자주 나오는 취약 패턴 넷

생성된 코드는 대개 관용적으로 보입니다. 문제는 관용적으로 보이면서 이스케이프 · prepare · 권한 확인 · 경로 검증만 빠져 있는 경우가 반복된다는 점이고, 검토 순서를 정해 두면 짧게 끝납니다.

개발자 6분 읽기

AI 활용 실무

AI 코드 리뷰가 잡는 것과 못 잡는 것

빠진 이스케이프와 빠진 권한 확인은 AI가 꾸준히 잡아 냅니다. 반대로 실행해야 알 수 있는 것 — 런타임 동작 · 플러그인 간 훅 순서 · 의도와의 일치 — 은…

개발자 4분 읽기

₩270,000 · 신청하기