20. 데이터베이스와 커스텀 데이터 처리, REST API를 이용한 외부 데이터 연동 및 활용

현대의 웹 개발에서 데이터베이스의 역할은 매우 중요합니다. 특히 워드프레스와 같은 콘텐츠 관리 시스템(CMS)에서는 데이터베이스를 통해 모든 콘텐츠를 관리합니다. 이번 강좌에서는 워드프레스의 데이터베이스 구조, 커스텀 데이터 처리, 그리고 REST API를 이용한 외부 데이터 연동 방법에 대해 자세히 알아보겠습니다.

1. 워드프레스 데이터베이스 구조 이해하기

워드프레스는 기본적으로 MySQL 데이터베이스를 사용합니다. 데이터베이스 구조는 다음과 같은 주요 테이블로 구성됩니다:

  • wp_posts: 게시물, 페이지, 첨부파일 등의 내용을 저장합니다.
  • wp_postmeta: 게시물에 대한 추가 메타데이터를 저장합니다.
  • wp_users: 사용자 정보를 저장합니다.
  • wp_usermeta: 사용자에 대한 추가 메타데이터를 저장합니다.
  • wp_options: 사이트의 설정 및 옵션을 저장합니다.

1.1 wp_posts 테이블

wp_posts 테이블은 주요 콘텐츠를 저장하는 곳입니다. 각 레코드는 다음과 같은 필드를 가집니다:

  • ID: 게시물의 고유 ID
  • post_author: 게시물 작성자의 사용자 ID
  • post_date: 게시물 작성 날짜
  • post_content: 게시물의 본문 내용
  • post_title: 게시물 제목
  • post_status: 게시물의 상태 (publish, draft 등)

1.2 wp_postmeta 테이블

wp_postmeta 테이블은 각 게시물에 대한 추가 메타 데이터를 저장합니다. 예를 들어, 특정 포스트의 커스텀 필드나 SEO 관련 정보를 저장할 수 있습니다.

2. 커스텀 데이터 처리

워드프레스에서는 기본 제공되는 데이터 구조 외에 사용자 정의 데이터 구조를 만들어 사용할 수 있습니다. 이를 위해 커스텀 포스트 타입(Custom Post Type)과 커스텀 필드를 정의해야 합니다.

2.1 커스텀 포스트 타입 생성하기

커스텀 포스트 타입을 생성하려면 register_post_type() 함수를 사용합니다. 다음은 예제입니다:


function my_custom_post_type() {
    register_post_type('book',
        array(
            'labels' => array(
                'name' => __('Books'),
                'singular_name' => __('Book')
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'books'),
            'supports' => array('title', 'editor', 'thumbnail')
        )
    );
}
add_action('init', 'my_custom_post_type');

2.2 커스텀 필드 추가하기

커스텀 필드는 특정 포스트에 대해 추가적인 정보를 저장하기 위해 사용됩니다. 워드프레스의 메타박스를 이용하여 쉽게 추가할 수 있습니다. 다음은 예제입니다:


function my_custom_meta_box() {
    add_meta_box('book_meta', 'Book Details', 'book_meta_callback', 'book', 'normal', 'high');
}
add_action('add_meta_boxes', 'my_custom_meta_box');

function book_meta_callback($post) {
    // 현재 메타데이터 가져오기
    $book_author = get_post_meta($post->ID, '_book_author', true);
    echo '';
    echo '';
}

function save_book_meta($post_id) {
    if (array_key_exists('book_author', $_POST)) {
        update_post_meta($post_id, '_book_author', sanitize_text_field($_POST['book_author']));
    }
}
add_action('save_post', 'save_book_meta');

3. REST API를 통한 외부 데이터 연동

워드프레스는 REST API를 지원하여 외부 애플리케이션과의 데이터 연동이 가능합니다. 이를 통해 비즈니스 로직을 효율적으로 처리하고, 다양한 플랫폼에서 워드프레스의 데이터를 활용할 수 있습니다.

3.1 REST API 기본 이해하기

REST API는 HTTP 요청을 통해 데이터에 접근하고 조작할 수 있는 방법을 제공합니다. 워드프레스의 REST API는 /wp-json/wp/v2/를 기본 엔드포인트로 사용합니다.

3.2 커스텀 REST API 엔드포인트 만들기

커스텀 REST API를 만들기 위해서는 register_rest_route() 함수를 사용합니다. 다음은 간단한 예제입니다:


function my_custom_endpoint() {
    register_rest_route('myplugin/v1', '/books/', array(
        'methods' => 'GET',
        'callback' => 'get_books',
    ));
}

function get_books($data) {
    $args = array(
        'post_type' => 'book',
        'numberposts' => -1
    );
    $books = get_posts($args);
    $result = array();
    
    foreach ($books as $book) {
        $result[] = array(
            'title' => $book->post_title,
            'author' => get_post_meta($book->ID, '_book_author', true)
        );
    }
    return new WP_REST_Response($result, 200);
}

add_action('rest_api_init', 'my_custom_endpoint');

3.3 외부 애플리케이션에서 데이터 가져오기

REST API를 통해 외부 애플리케이션에서 워드프레스의 데이터를 가져올 수 있습니다. JavaScript를 사용하여 AJAX 요청을 보내고, 데이터를 JSON 형식으로 받아올 수 있습니다. 다음은 간단한 예제입니다:


fetch('https://yourwordpresssite.com/wp-json/myplugin/v1/books/')
    .then(response => response.json())
    .then(data => {
        console.log(data);
    })
    .catch(error => console.error('Error:', error));

4. 데이터 처리 및 활용

위의 방법들을 통해 커스텀 데이터 처리가 가능해지고, REST API를 통해 외부 데이터와의 연동이 가능합니다. 이제 이 데이터를 워드프레스의 다양한 구조에서 어떻게 활용할 수 있는지 예를 들어보겠습니다.

4.1 프론트엔드에서 데이터 표시하기

REST API를 통해 가져온 데이터를 워드프레스의 프론트엔드에 표시할 수 있습니다. 예를 들어, 각 책의 제목과 저자를 리스트로 표시하는 코드는 다음과 같습니다:


function display_books() {
    ?>
    

4.2 데이터 분석과 활용

수집한 데이터를 활용하여 통계 정보나, 데이터 기반의 추천 시스템을 구현할 수 있습니다. 예를 들어, 특정 저자가 작성한 모든 책을 필터링하여 사용자에게 추천할 수 있습니다. 이러한 기능을 구현하기 위해서는 추가적인 쿼리와 필터링 로직이 필요합니다.

결론

이번 강좌에서는 워드프레스에서 데이터베이스와 커스텀 데이터를 처리하는 방법, REST API를 사용하여 외부 데이터와 연동하는 방법에 대해 살펴보았습니다. 이러한 방법들을 잘 활용하면 더욱 효율적이고 유연한 워드프레스 사이트를 구축할 수 있습니다. 데이터의 흐름을 이해하고 활용하는 것은 현대 웹 개발에서 필수적인 요소이므로, 앞으로도 학습을 계속해 나가기를 바랍니다.