내가 CPT UI나 ACF를 싫어하는 이유

CPT UI의 문제점

CPT UI를 쓰면 커스텀 포스트나 택소노미를 빠르게 생성할 수 있다. 하지만 빠른 것이 무조건 좋은 것만은 아니다. 콘텐츠의 성격이 커스텀 포스트로 잘 반영되어야 한다. 즉 커스텀 포스트 생성시 여러 속성을 통해 조절해야만 하지만 UI로 접근하는 사람들은 그런 디테일을 잘 고려하지 않는다.

다만 CPT UI에서는 충분히 그런 디테일을 제공한다. 누차 얘기하지만 툴을 비난하는 것이 아니다. 나는 쓰는 사람들의 무심함을 꼬집어 이야기하고 싶은 것이다. 대개 이 플러그인을 쓰는 사람들은 디테일에 지나치게 무심하다.

이름, 여러 레이블, 공개 여부, 쿼리 변수나 다시쓰기 슬러그, 위계성, 편집 화면의 지원 요소, 그리고 RSS 피드 제공 여부… 많은 요소들이 있지 않은가?

한편 택소노미와 포스트 타입 생성을 위한 파라미터들은 정형화되어 있으므로 적절히 샘플 코드 정도로 을 만들어 두면 된다. 조금 길어 보일 수는 있어도 콘텐츠에 대한 상세한 고려를 위해서는 이렇게 하는 것이 좋다. 또 다르지만 비슷한 타입들도 굳이 UI를 통해 일일이 클릭하는 것보다는 코드로 빠르게 복제하는 것이 능률적이다. 굳이 플러그인까지 도입해서 처리해야 만들어야 하는 건지?

ACF의 문제점

ACF는 CPT UI보다 문제가 심각하다. ACF를 사용하면 나름 깔끔한 관리자 UI를 생성할 수 있다. 그러나 쉽고 편한 것이 반드시 좋다고 말하기는 어렵다. 사이트의 기능이 많고 복잡할수록 ACF는 그 복잡합을 더 증가시킨다.

ACF의 가장 나쁜 점은 코드 곳곳에 흐름의 공백을 만들어낸다는 점이다. 개발자는 코드를 보면서, 코드의 흐름을 따라가면서 프로그램을 완성시킨다. ACF가 생성하는 커스텀 필드는 그 실체가 모두 데이터베이스에 저장되어 있다. 그래서 커스텀 필드를 이해하려면 관리자 페이지에서 ACF UI를 보면서 그 설계를 이해해야만 한다. 코드를 읽다가 UI로 넘어가는 일이 잦다는 점. 사이트가 커지면 커질 수록 이 문제는 점차 감당하기 쉽지 않게 된다.

또한 데이터와 UI가 ACF에서 강하게 결합되어 버린다. 대개 ACF의 유연한 옵션 때문에 일반적으로는 나름 괜찮은 UI로 결론이 나지만, 때때로 복잡하거나 특정한 상황에서는 좀 더 효율적인 형태로 만들어져야 할 때가 있다. 그럴때 ACF는 개발자의 창의력을 붙잡아버린다. 더 이상의 무엇이 나오지 않는 것이다.

뭐가 불만이었니?

CPT UI, ACF(Advnced Custom Field)는 워드프레스 개발하면서 많이 찾는 플러그인이고, 인기 있는 플러그인이다. 둘을 쓰면 쉽고 빠른 제작에 도움이 된다.

그러나 그럼에도 불구하고 나는 CPT UI, ACF를 좋아하지 않는다. 아, 그러나 오해는 없기를 바란다. 나는 그 두 플러그인 제작자에 대한 폄하는 추호도 없다. 내 호불호를 떠나 객관적으로 이 둘은 멋진 플러그인이다. 진심으로 나도 이런 플러그인을 만들면 좋겠다. 비유를 들면 CPT UI, ACF는 마치 칼 같은 그저 도구라는 것. 이 칼들에 그렇게 심각한 문제가 있다고는 생각하지 않는다. 다만 이 칼이 너무나 무분별하게 남용하고 있다는 것.

이들은 작은 웹사이트, 혹은 사이트의 소유자가 직접 관리하면서 개발하려는 의지가 있을 때 엄청난 축복이다. 그러나 웹사이트를 전문적으로 제작하려는 사람, 좀 더 고도화된 기능을 개발하려는 사람에게는 이들은 좋은 옵션이 될 수 없다고 생각한다. 불행하게도 나는 후자에 있고, 후자의 시선으로 판단하기에 이런 의견을 블로그에 포스팅하는 것이다.

댓글 1개

  1. 좋네요. 말씀하신것과 같은 개발 서포트 성향의 플러그인들은 구축단계에서는 작업에 속도를 낼 수 있고, 많은 작업을 플러그인의 도움을 빌어 생략(?)할 수 있어 상당한 이점으로 느껴집니다. 하지만 운영을 하다보면 성능적인 측면에서나, 추가적으로 기능을 더할때나 수정할때에 코드와 플러그인의 연관성을 추적하느라 곤혹스러웠던 적이 종종 있었습니다. 그럼에도 ACF 같은 툴들이 주는 이점을 쉽게 떨쳐버리기는 또 망설여지는 상황이구요~ 워드프레스 프로젝트에 있어 계륵같은 존재가 아닐까합니다.. ㅎㅎ

댓글 남기기