이번 글에서는 WordPress REST API를 사용하여 커스텀 필드를 가져오고, 게시물의 개수를 제한하는 방법을 알아보겠습니다. REST API를 통해 효율적으로 데이터를 관리하고, 이를 React와 Next.js 같은 프론트엔드 프레임워크에서 활용할 수 있도록 하는 방법을 구체적으로 설명할 예정입니다.
우리는 두 가지 핵심 작업에 집중할 것입니다:
- 게시물 개수 제한: `per_page` 파라미터를 통해 한 번에 가져오는 게시물 수를 제한하는 방법.
- 커스텀 필드 가져오기: WordPress의 커스텀 필드(예: `set_lang`)를 REST API 응답에 포함시키는 방법.
이 글을 통해 [API의 활용도]와 [WordPress 커스텀 필드 사용 방법]에 대해 확실하게 이해할 수 있을 것입니다.
WordPress API로 게시물 개수 제한하기
REST API를 통해 불필요하게 많은 게시물을 불러오지 않고, 원하는 개수만 가져올 수 있도록 설정하는 것은 중요한 작업입니다. `per_page` 파라미터를 사용하면 이 문제를 쉽게 해결할 수 있습니다. 기본적으로 한 번에 10개의 게시물이 반환되지만, 이 값을 필요에 따라 조정할 수 있습니다.
API 요청 예시
여기서는 한 번에 5개의 게시물만 가져오는 예시를 살펴보겠습니다:
async function fetchPosts() {
const res = await fetch('https://example.com/wp-json/wp/v2/posts?per_page=5');
if (!res.ok) {
throw new Error('Failed to fetch posts');
}
return res.json();
}
이 예시에서는 API 호출 시 `?per_page=5`를 추가하여 최대 5개의 게시물만 반환되도록 설정했습니다. 간단하지만 매우 유용한 방법입니다. 이를 통해 [웹 페이지의 성능]을 크게 개선할 수 있습니다.
커스텀 필드 가져오기: `set_lang` 필드
WordPress는 기본적으로 REST API 응답에 커스텀 필드를 포함하지 않지만, 이를 설정하는 방법은 의외로 간단합니다. 우리는 WordPress의 Advanced Custom Fields (ACF) 플러그인을 사용하거나, 테마의 `functions.php` 파일을 수정하여 이 문제를 해결할 수 있습니다.
ACF 플러그인 사용하기
ACF를 설치하고 `set_lang` 필드를 추가한 후, 해당 필드를 API에 포함시키는 방법은 다음과 같습니다.
// functions.php에 추가할 코드
function add_custom_fields_to_rest_api( $data, $post, $context ) {
// 커스텀 필드 값을 가져옴
$custom_field = get_post_meta( $post->ID, 'set_lang', true );
// API 응답에 필드 추가
$data->data['set_lang'] = $custom_field;
return $data;
}
// API 호출 시 커스텀 필드 포함
add_filter( 'rest_prepare_post', 'add_custom_fields_to_rest_api', 10, 3 );
위 코드를 사용하면, `set_lang`이라는 커스텀 필드가 WordPress REST API 응답에 포함됩니다. 이렇게 하면 프론트엔드에서 필요한 데이터를 받아서 처리할 수 있게 됩니다.
React와 Next.js에서 API 데이터 활용하기
이제 API에서 데이터를 받아와서 React와 Next.js에서 활용하는 방법을 살펴보겠습니다. 커스텀 필드와 함께 게시물 목록을 화면에 출력하는 예시입니다.
async function fetchPosts() {
const res = await fetch('https://example.com/wp-json/wp/v2/posts?per_page=5');
if (!res.ok) {
throw new Error('Failed to fetch posts');
}
return res.json();
}
export default async function Home() {
const posts = await fetchPosts();
return (
<div>
<main>
<h1>Latest WordPress Posts</h1>
<ul>
{posts.map((post: any) => (
<li key={post.id}>
<h2>{post.title.rendered}</h2>
<p>Language: {post.set_lang || 'N/A'}</p> {/* 커스텀 필드 값 사용 */}
<div dangerouslySetInnerHTML={{ __html: post.excerpt.rendered }} />
</li>
))}
</ul>
</main>
</div>
);
}
이 코드에서는 `post.set_lang`을 통해 커스텀 필드 값을 렌더링합니다. 이를 통해 각 게시물의 언어 정보를 간단히 확인할 수 있습니다. React와 WordPress API의 결합은 매우 강력하며, 커스텀 필드를 사용해 동적인 콘텐츠를 쉽게 구현할 수 있습니다.
결론
WordPress REST API는 매우 유용한 도구입니다. 특히 커스텀 필드와 게시물 개수를 제한하는 방법을 통해 API의 성능을 최적화하고, 프론트엔드에서 보다 나은 사용자 경험을 제공할 수 있습니다.
이번 글에서 배운 내용을 통해, WordPress 사이트의 효율성을 높이고 사용자 경험을 개선하는 데 기여할 수 있을 것입니다.