워드프레스의 처리 구조 – 코어, 테마, 플러그인의 기능과 디렉토리 구조

워드프레스는 코어, 테마, 플러그인의 삼중 계층으로 구성되어 있습니다. 기본적인 기능은 코어에서 담당하고, 사이트가 어떻게 보일지의 레이아웃 설정은 테마에서 구성하구요. 코어에서 제공하지 않는 기능들은 플러그인이 담당합니다.

워드프레스를 설치한 직후 관리자 페이지에 로그인해보면 플러그인이 몇개 활성화되어 있고 기본 테마들이 준비되어 있습니다. 이 상태에서 사용자가 기호에 맞게 테마도 설치해서 쓸 수 있고, 플러그인도 그렇습니다.

테마를 바꾸면 사이트의 레이아웃이 바뀌구요. 플러그인을 활성화하면 기능이 추가됩니다.

일단은 플러그인은 기능 추가 테마는 사이트 레이아웃 이렇게 구별되지만요. 심도있게 들어가면 테마와 플러그인이 함께 제공되는 경우도 있는데요. 큰틀에서 코어에서 제공되는 기본 기능을 테마와 플러그인이 보완해준다는 이해로 하면 됩니다.

보시다시피 코어가 제일 하부에서 작동하구요. 코어 위에서 플러그인과 테마가 작동합니다. 겹친 부분은 대충 그린 것으로 서로 연동되는 것을 묘사했습니다.

우선 코어의 구조부터 살펴보면요. 워드프레스 디렉토리 구조부터 봅시다.

설치직후에 디렉토리 구조는 아래와 같습니다.

/wp-admin
/wp-content
/wp-includes
.htaccess
wp-config-sample.php
그외 파일들

각각의 디렉토리는 코어, 플러그인, 테마에 대응됩니다.

우선 /wp-admin과 /wp-includes와 설치 루트 디렉토리의 파일들은 워드프레스 코어입니다. /wp-content에는 사용자 지정 파일이 들어가게 되는데 테마와 플러그인, 미디어 파일, 업로드한 파일 등이 저장되게 됩니다.

wp-config-sample.php
이 파일은 워드프레스에서 참조하는 설정이 저장되어 있는 파일입니다. 보통 설치과정에서 wp-config.php 로 바뀌어 저장되구요. 제가 쓰는 클라우드웨이즈에서 관리자 모드로 애플리케이션을 만들면 wp-config-sample.php 없이 필요한 설정이 된 상태의 wp-config.php 가 대체되어 있습니다.

wp-config.php 안에는 PHP의 define() 구문으로 지정된 상수와 그 값이 설정값을 갖게 되어 워드프레스 작동시 참조하게 됩니다.

.htaccess
아파치용으로 규정된 파일로, 웹서버의 작동을 제어하는 옵션들이 저장된 파일입니다. 워드프레스에 특화된 기능은 기본적으로는 고유주소 설정값이 저장되어 슬러그가 포함된 영구주소를 지정하게 하는 기능입니다.

/wp-admin
이 디렉토리 안에는 워드프레스의 관리자 모드 실행용 파일들이 저장되어 있습니다. 글을 써야 할때, 테마를 바꿔야 할때, 플러그인을 관리해야 할때와 같이 관리자 권한으로 처리해야 하는 워드프레스 기능을 실행할때 이 디렉토리를 웹브라우저로 접근하면 이 디렉토리에 있는 파일들이 중추적이 되어 관리자 모드에 진입하게 해줍니다. 워드프레스 코어의 일부입니다.

/wp-includes
이 디렉토리에는 워드프레스 코어 각각의 기능 실행시 필요한 라이브러리 파일들이 저장되어 있습니다. 프로그램의 관점에서 기능을 실행할때 자주 쓰이는 반복 루틴이 있는데 이를 규정한 파일들이 들어가있구요. /wp-admin에는 관리자 모드에 특화된 의미에서의 코어라면, /wp-includes 에는 관리자 모드 이외의 기능을 담당하는 의미에서의 코어입니다.

/wp-content
이 디렉토리에는 플러그인, 테마, 업로드된 파일들 등이 저장되는 디렉토리입니다. 사용자가 추가하는 파일들이 저장되는 장소로, 플러그인을 설치하면 이 디렉토리에 저장되고, 테마도 그렇습니다. 그리고 미디어 파일도 여기에 저장됩니다.

이들 디렉토리 구조에 의해 코어, 테마, 플러그인에 대응되는 파일들이 존재하는데요. 코어는 대개 워드프레스 재단 개발자들이 수정보완을 해서 업데이트를 발표하면 기능 향상이 됩니다. 테마는 사이트 주인이나 디자이너들이 개발하구요. 플러그인은 플러그인 개발자들이 개발합니다.

테마는 HTML과 CSS, 자바스크립트, 미디어 파일로 구성된 잘 제작된 한묶음의 파일들로, /wp-content/themes 아래 저장되며 사이트가 어떻게 보일지를 결정하며 사이트의 기능 일부를 추가해서 구현하기도 합니다.

플러그인은 워드프레스 코어가 제공하는 API를 활용해서 코어에서 제공하지 않는 기능을 제공하기 위해 만들어지는 기능 확장용 프로그램으로, /wp-content/plugins 에 저장되며 그예로 코어에서 제공하지 않는 목차 플러그인, 슬러그 길이 제한푸는 플러그인, SEO 플러그인이 대표적입니다.

한마디로 말하자면 워드프레스 설치후 코어에서 제공하지 않는 기능을 플러그인을 골라서 확장해서 쓰면 해당 기능이 추가되어 코어와 연동하는 구조입니다. 테마는 사이트의 외관을 결정하구요.

일단 이정도로만 설명하겠습니다.

아래는 추가 컨텐츠인데요. 타사이트에 제가 올렸던 글인데, 인용해보겠습니다. PHP, CSS, 자바스크립트, HTML 등의 개념잡아드리는 글입니다.


워드프레스는 블로그툴입니다. 다른 말로 블로그 기능을 수행하는 스크립트 파일들이죠. 우리가 워드프레스로 만들어진 블로그 사이트에 들어오면 글을 보여주고 댓글도 달 수 있게 해줍니다. 이게 가능한 것은 워드프레스라는 이름으로 만들어진 스크립트들이 실행되어 사용자의 웹브라우저에 보여지게 작동하기 때문입니다.

이 매커니즘은 여러 기술들의 총합에 의해 작동하는데요. 우선 프로그래밍 언어와 서버 매커니즘을 이해하면 이해가 쉽습니다. 사이트를 들어온다는 것은 사이트를 구성하는 파일들이 저장된 웹서버에 사용자가 웹브라우저로 열람을 요청하는 것이구요. (즉 사이트에 오면) 웹서버가 알맞은 응답을 하면서 서로 통신을 주고받으며 특정 사이트를 화면에 표시하게 됩니다. 여기에 게시판이 표시되면 글을 올리고 읽을 수 있고, 블로그가 표시되면 글 읽고 댓글 달고, 채팅방이 표시되면 채팅을 하는 등의 작업이 가능해지게 되는 것입니다.

워드프레스는 여러 스크립트로 구성되어 있는데요. PHP라는 프로그래밍 언어로 만들어졌습니다. PHP는 일종의 설계도 작성 역할을 하는 프로그래밍 언어인데요. PHP로 소스코드를 만들어 웹서버에 적절한 설정과 함께 공개하면 방문자가 찾아와서 실행하는 구조입니다. 그래서 PHP를 알면 워드프레스의 내부 작동을 이해하는게 편리해집니다.

워드프레스는 PHP뿐아니라 HTML이나 CSS, 자바스크립트, JPG이나 PNG같은 그림파일, 영상파일 등의 부속파일들로도 구성됩니다. 특히 테마가 중요한데요. 테마는 테마 제작자들이 만들어 배포하는 뷰 개념입니다. 워드프레스의 외관을 결정하죠. PHP 코드와, HTML 코드, CSS 코드, 자바스크립트에 대한 이해가 선행되면 아주 편리하

게 테마 파일 고치는 아이디어를 얻을 수 있어 특기할만합니다.

우선 HTML은 마크업언어로 화면에 표시할 사이트 레이아웃 배치를 지정하는 파일 형식이구요. CSS는 HTML 구성 요소를 보완해서 레이아웃을 상세하게 지정하는 HTML의 보완재 역할을 합니다. 자바스크립트는 서버에서 실행되는 서버사이드 언어인 PHP를 보조하는 역할을 하는 웹프로그래밍 언어로, 이들 요소들이 협동으로 블로그를 가능하게 합니다.

이들 기술들은 서로 맞물려서 작동하구요. 각각이 할 수 있는 기능이 다르고 겹치기도 합니다. HTML은 우선 여러 태그가 고유의 기능을 가지고 있어서 이 기능들을 대응하는 태그를 조합해서 화면 표시를 규정합니다. 제목을 표시한다든가, CSS 파일을 지정한다든가, 캐노니컬 태그를 지정하기도 하고, 구글 애드센스 코드도 들어가고, header, article, footer 등의 레이아웃 요소 배치 위치도 결정하네요. 비교적 화면 표시 기능에 집중하기에 간단한 기능이고, 태그도 제한적인 개수라 배우기가 어렵지 않습니다. 각각의 태그 사용법을 숙지하면 화면에 표를 보여준다거나 사이드바를 보여주는 등의 제작이 가능해집니다.

CSSHTML태그들을 더욱 더 섬세하게 제어하는 기반을 제공합니다. 웹폰트를 지정해서 사용자 PC에 폰트가 없어도 원하는 폰트를 지정하기도 하고 (이는 HTML만으로는 안됩니다) 절대위치와 x축, y축으로 나누어 HTML 요소를 배치하기도 하며 웹브라우저 실행창의 스크롤바 색상을 바꾸기도 하는 등의 기능을 제공합니다. HTML의 속성을 바꾸는 것으로 이해하면 됩니다.

자바스크립트는 프론트엔드 기능을 주로 수행하는데, 스크롤되는 메뉴 표시를 하거나 롤오버되는 메뉴도 만들고, 요즘은 서버에 HTTP 요청을 보내는 용도로도 쓰입니다. 초창기에 비해 월등하게 발전되어 지금은 PHP가 하는 기능의 일부를 자바스크립트로 대체할 수도 있게 발전했습니다.

HTML, CSS, 자바스크립트, PHP가 중요한 네가지 웹프로그래밍 기술로 이들을 이해하고 있으면 워드프레스 튜닝이 더 쉬워집니다.

워드프레스 특정으로는 테마를 고쳐야 할때, 해야 하는 워크플로우가 정해져 있습니다. 보통 워드프레스 제작진이 만들어서 제공하는 워드프레스 템플릿 API가 있는데요. 이들을 조합해서 테마를 수정하고 보완하는게 가능해집니다. 

반복작업을 위해 루프를 돌리고 루프 안에서 포스팅된 글을 탐색하고 제목과 메타데이터를 표시하고 글 요약본을 표시하고 템플릿 파트를 읽어들이고, 페이지를 나누고, 댓글 폼표시하고… 이런 기능을 뷰, 로직으로 나누어 구현하게 되어 있습니다. 여기에는 HTML, CSS 자바스크립트, PHP가 관여할 수 있으며 테마 제작자마다 조금씩 다른 구문으로 구현하므로 잘 읽는 것도 능력의 일부가 됩니다.

설명이 조금 장황하게 되는데요. 요약하자면 아래와 같습니다.

HTML: 마크업 언어. 화면에 표시할 레이아웃 구성 요소 지정이 주된 기능. 태그로 지정.CSS: HTML의 속성을 섬세하게 제어. 레이아웃 구성 요소 지정이 주된 기능. 태그명, 선택자, 속성등으로 구성.자바스크립트: 웹프로그래밍 언어. 프론트엔드를 주로 구현. (화면 표시 제어)PHP: 웹프로그래밍 언어. 서버에서 작동해서 워드프레스 스크립트를 실행한다. 워드프레스의 대부분의 파일이 PHP로 작성됨.

이 글의 서술은 조금 거칠어서 이해는 되셔도 아주 딱잘라 말하지는 않아서 잘쓴 글은 아닌 것 같구요. 대신 직관적으로 어떻다는 것은 설명해보았습니다.  부끄럽지만 올려봅니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤