프로젝트나 새로운 업무를 맡게 되면 업무 분석이 필수적이다. 쉬운 방법으로 소스 디버깅을 선택할 수 있지만, 이 보다는 데이터베이스를 분석하는 게 훨씬 효과적이다. 해당 DB를 이해하지 못한 상황에서 복잡한 비즈니스 로직으로 가득 찬 소스를 디버깅한다는 건 미로 속을 헤매는 것과 별반 다르지 않다.
워드프레스는 간단한 데이터베이스 테이블의 구조와 관계를 가지고 있다. 테이블 명만 봐도 대충 용도를 파악할 수 있을 정도로 테이블 간의 관계가 명료하다. 또한, 테이블마다 기본키(primary key)를 구성하는 친절함도 빼먹지 않았다.
주요 테이블을 상세히 들여다보자.
- wp_comments 워드프레스의 모든 댓글을 저장한다. 각 댓글은 post ID를 통해 포스트와 연결된다.
- wp_commentsmeta 댓글의 모든 메타테이터를 저장한다.
- wp_links 링크 관리자 기능에서 추가한 모든 링크를 저장한다.
- wp_options 설정 메뉴에서 저장한 모든 웹사이트 옵션값을 저장한다. 또한, 플러그인 옵션과 지금 쓰고 있는 테마와 플러그인, 기타 정보를 저장한다.,
- wp_postmeta 포스트의 모든 메타데이터를 저장한다.
- wp_posts 모든 포스트와 페이지, 미디어 레코드와 수정본을 저장한다. 대부분의 경우 워드프레스 테이블 중에서 가장 크다.
- wp_terms 웹사이트에서 정의된 모든 택소노미 용어를 저장한다.
- wp_term_relationships 포스트와 링크 등의 콘텐츠와 텍소노미 용어를 결합한다.
- wp_term_taxonomy 각 용어에 할당된 택소노미를 정의한다.
- wp_users 웹사이트에 생성된 모든 사용자 정보를 저장한다. (계정, 비밀번호, 이메일)
- wp_usermeta 사용자의 메타데이터를 저장한다. (이름, 별명, 등급)
워드프레스에서 이 데이터베이스를 다루기 위한 클래스가 정의되어 있다. wpdb 클래스이고 wp-includes/wp-db.php에 있다. PHP코드에서 워드프레스 데이터베이스를 쿼리 한다는 것은 wpdb 클래스를 사용한다는 뜻이다.