| 워드프레스(Wordpress)
워드프레스는 CMS(Content Management System)으로서 웹사이트를 쉽게 호스팅할 수 있도록 제공되는 오픈소스 솔루션이다. php로 구성되어 있으며 보통 apache, mysql(mariadb)와 같이 연동되어 구성된다.
워드프레스 구조, php를 전혀 몰랐을 때 워드프레스의 구조와 각종 기능들이 어떻게 연동되며 동작하는 지 몰라 많이 헤멨었던 기억이 난다. 그동안에 여러 블로그와 책들을 봤지만 내가 원하는 핵심적으로 워드프레스의 구조와 기능을 설명하는 글은 딱히 찾아보지 못했고 워드프레스의 admin 페이지와 php 소스 코드를 분석해보고 나서 워드프레스가 어떻게 돌아가는 지 겨우 감을 잡을 수 있었다.
워드프레스의 핵심 구조만 알면 wp-admin 페이지에서 수정하기 어려웠던 커스텀 테마나 여러 기능들을 직접 php 코드나 DB의 데이터를 수정하면서 손쉽게 바꿀 수 있다. 이제 내가 생각하는 워드프레스의 핵심 구조와 기능을 알아보겠다.
| 워드프레스 구조(Wordpress Architecture)
워드프레스는 php 뭉치라고 생각하면 된다. wp-admin, wp-content, wp-includes 같은 핵심 디렉터리 밑에 하위 디렉터리로 나뉘어 있지만 결국에는 php 코드로 이루어진 솔루션이다. 이 php는 html 코드를 동적으로 생성하고 이 php가 만들어준 동적인 html에 css와 js가 적용되어 프론트 페이지가 사용자에게 전달되는 것이다. 처음에 칼립소 admin 페이지가 React 기반의 nodejs라고 해서 워드프레스가 javascript로 바뀌는 건가 생각했지만 아니다. 핵심 기능은 php코드로 다 작성되어 있다.
워드프레스는 php 뭉치와 그것을 뒷받침 해주는 html, css, js 솔루션이라고 다시 한 번 말하고 싶다.
보통 아래와 같이 워드프레스 구조가 구성된다. (DB로는 mariaDB 혹은 mysql을 쓴다)
- 사용자가 워드프레스 기반 웹사이트의 URL을 타고 들어가 HTTP 요청을 한다.
- HTTP SERVER(Apache) 서버는 이 요청을 받아 Wordpress의 PHP 모듈에 동적인 HTML 페이지를 요청하게 된다.
- Wordpress는 이 요청을 받아 필요하면 DBMS에 데이터를 저장하거나 받아와 동적인 HTML 페이지를 만들고 HTTP SERVER에게 보낸다.
- HTTP SERVER는 동적으로 생성된 HTML 페이지를 사용자에게 전달한다.
정말 단순하다. 이렇게 보면 Wordpress에 어떤 문제나 수정사항이 발생하였을 때 어느 부분을 보면 되고 디버깅해야 되는 지 쉽게 보인다.
예로들어 Wordpress 사이트에 특정 페이지의 데이터가 잘못 표기되는 문제가 발생했다고 하자. 그렇다면 Wordpress가 어떤 데이터를 쓰는지 php코드를 통해 확인하고 이 데이터가 MariaDB에 어떻게 저장되어 있는 지 확인하면 되는 것이다.
만약 404 Not Found 코드가 떴을 경우에는 먼저 HTTP SERVER가 잘못 설정되어 있는 지 혹은 실제 잘못된 URL이 매핑되어 있는지 확인하면 되는 것이다.
| 워드프레스 기능
워드프레스는 사용자가 쉽게 웹사이트를 제작할 수 있도록 테마와 플러그인을 설치할 수 있는 환경을 제공한다. 단순히 테마만 설치하면 꽤나 그럴싸한 웹사이트를 제작할 수 있고 플러그인을 설치하면 직접 javascript로 개발해야하는 기능을 손쉽게 적용가능하다.
이 테마와 플러그인은 {SITE_URL}/wp-admin 에 들어가면 쉽게 설치할 수 있으며 가이드를 자세히 읽어보지 않더라도 매우 직관적으로 사용자가 편리하게 되어 있다.
위 사진은 내가 유료 테마를 사서 적용한 사이트의 admin 페이지다. 처음 사용 시 조금 헤메겠지만 개발자들은 조금 클릭만 하면 금방 적응할 수 있도록 아주 직관적으로 UI 설계가 잘 되어 있다.
무료 테마 혹은 유료 테마를 적용해서 사이트를 만들면 아래와 같이 아주 그럴싸한 웹사이트 UI가 완성된다.
<유료 테마 적용 realhomes - http://modern.realhomes.io/>
그리고 위 테마를 만들기 위해 여러 기능을 제공하는 플러그인들이 설치된다. 이 플러그인 기능을 이용하면 각종 payment 결제, 소셜 로그인, 페이지 템플릿 툴 등을 손쉽게 사용할 수 있다.
역시 plugin들과 theme들도 php코드 및 css, js, html로 구성되어 있다. theme들과 plugin 들은 wp-content 디렉터리 밑에 설치되며 wp-admin에서 바꾸기 어려운 부분을 바꾸고 싶다면 themes 디렉터리에 들어가서 그 기능이 구현된 php 코드를 찾아 수정하면 된다. 수정하는 방법도 위 아키텍처를 이해하고 적응이 되면 그리 어렵지 않다.
| 워드프레스와 DB
워드프레스는 페이지 구현에 필요한 데이터와 각종 옵션들을 DB에 저장하여 관리하고 있다. 여기서 중요한 것은 각 DB들이 어떤 역할을 하는 것을 파악하는 것이다.
예로 wp_options 테이블은 워드프레스 사이트의 각종 설정값과 제목, 링크값들을 모아놓은 테이블로서 워드프레스 php 코드가 이 테이블을 참조하여 각종 정보를 읽어들인다.
이 글을 공유하기