ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Wordpress DB table 파헤치기
    카테고리 없음 2017. 1. 10. 19:55



    [참고]


    2007년 포스팅을 번역하였습니다. WordPress 버전에 따라 다소 차이가 있을 수 있습니다. 


    wp_posts 


    WordPress는 CMS(Contents Management System) 으로 주로 사용된다. Content 테이블이 가장 중요한 핵심이다. 페이지와 포스트, 첨부파일 모두가 Content이다. WordPress는 이 모든 것을 wp_posts라는 하나의 테이블에 저장한다.


    사실 첨부파일은 디스크에 파일로 저장되지만 WordPress는 첨부파일의 메타정보를 wp_posts 테이블을 저장하여 사용한다. 업로드 사용자의 ID, 첨부파일이 연결된 포스트의 ID, 업로드된 데이터 등의 메타정보를 유지한다. 


    페이지와 포스트 그리고 부가 정보들은 매우 유사하면서도 확실히 다르다. 세가지 모두 제목, 공개일자, 설명, Content ID를 갖는다(이 아이디는 MySQL이나 WordPress 에 의해 자동으로 부여된다). 각각 포스트, 페이지, 첨부파일 세가지 모두 URL을 갖는다. WordPress는 wp_posts 테이블의 레코드에 저장하여 관리한다.


    Post, Page, 첨부파일의 차이로는 wp_posts 테이블의 post_type 컬럼이 다르다. 예를 들어 Post들의 post_type의 값은 'post'이다 페이지의 경우 'page'라는 타입을 갖고, 첨부파일은 'attachments' 라는 값이 저장된다. 


    몇가지 특별한 타입의 Post 일때만 사용되는 몇가지 컬럼이 있다. post_mime_type은 attach file 의 type을 위해 'image/jpeg' 나 'application/pdf'를 저장한다. (MIME 타입) menu_order 컬럼은 page의 순서를 위해 사용된다. past_parent는 하위페이지를 갖는 페이지 구성을 위해 사용되고 포스트의 첨부파일을 연결하기 위해서도 사용된다. 


    아래의 쿼리는 post_type 컬럼이 사용되는 예이다.


    SELECT * FROM wp_posts WHERE post_type = 'post' LIMIT 1

    SELECT * FROM wp_posts WHERE post_type = 'page' LIMIT 1

    SELECT * FROM wp_posts WHERE post_type = 'attachment' LIMIT 1



    Post 상태는 테이블에서 관리된다. 


    wp_posts 테이블 만으로 할수 있는 것은 다음과 같다.

    1) 통계정보 생성

    2) 모든 첨부파일 목록 생성

    3) 이미지 갤러리 생성 

    ex) "WHERE post_type = 'attachment' AND (post_mime_type = 'image/jpeg' OR post_mime_type = 'image/gif' OR post_ime_type = 'image/png')" 




    wp_postmeta


    Post에 들어가는 내용 이외에 추가하고 싶은 모든것들 ( SEO 정보, GPS, 음악 등등) Post에 남기고 싶은 모든 기타 정보들은 wp_postmeta 테이블에 저장할 수 있다.


    table의 구조는 매우 단순하고 유연하다. 이 테이블은 단지 4개의 컬럼만 갖는다 (meta_id, post_id, meta_key, meta_value). 


    post_id는 post의 아이디이다(wp_posts 테이블에 저장됨). meta_key는 정보의 설명이다.(song, seo). meta_value는 실제 메타 정보 데이터이다. 


    WordPress는 wp_postmeta 테이블을 wp_posts 테이블에 저장될 수 없는 첨부파일의 부가적인 정보를 저장하는 용도로 사용한다(첨부파일 경로, 요약정보 등). 또한 부가적인 plugin에서 테이블을 마음대로 사용할 수 있도록 유연성을 제공한다. 




    wp_users


    wp_users 테이블은 등록된 사용자를 저장한다. UserID, login, 암호화된 암호, 이름, 등록일자 등을 wp_users 테이블에 저장하여 관리한다. 사용자에 대한 실제적인 정보라고 생각하면 된다.




    wp_usermeta


    wp_usermeta 테이블은 wp_postmeta 테이블에 포스팅된 post의 사용자들에 대한 테이블이다. 생일이나, 연락처 등의 게시자의 정보를 저장하는 용도로 사용된다.




    wp_comments


    wp_comments 테이블은 사이트의 모든 comments들을 관리한다. 이 테이블은 승인된 댓글과 승인을 기다리는 댓글, 스팸, 트랙백, 핑백이 저장된다. 


    comment_ID : 각각 댓글에 대한 ID 값으로 MySQL에 의해 생성된다

    comment_post_ID : 댓글이 만들어진 post 의 ID

    comment_author : 댓글 작성자 이름

    comment_author_email : 댓글 작성자 메일주소

    comment_author_ip : 댓글 작성자의 IP

    comment_date : 댓글 등록 일시

    comment_content :  댓글 내용

    comment_approved : 승인 여부 

    comment_type : 보통 댓글인지, trackback 인지 구분하는 유형

    user_id : 로그인한 사용자가 등록했다면 ID 저장




    wp_options


    WordPress 설치에 대한 전역적인 모든 옵션이 저장되는 테이블이다. 이 테이블은 wp_postmeta와 wp_usermeta 테이블가 유사하다. 




    wp_categories


    Category 이름과 설명이 저장되고 각각 상위 카테고리의 ID 또한 저장된다. 자주 요청되는 포스트와 링크는 각각의 카테고리의 wp_categories 테이블에 간략하게 저장된다. 카테고리에 포스트를 추가할 때마다 포스트 카운터는 증가한다( category_counter 칼럼)




    wp_post2cat


    포스트는 wp_post2cat 테이블을 통해 카테고리로 연결된다. wp_post2cat 테이블은 레코드 아이디, 포스트의 ID, 카테고리의 ID 3가지 필드가 저장된다.



Designed by Tistory.