워드프레스 고급 강의 - wp query

WP_Query로 특정 카테고리 글 불러오기 – 워드프레스 강좌

이번에는 워드프레스에서 특정 글을 불러올 때 사용하는 WP_Query에 대해 알려드릴게요. 저번에 배열과 함수, 조건문, 반복문 이렇게 배워봤죠. 그런 개념들이 워드프레스에서 가장 많이 사용된 부분이 WP_Query라고 생각합니다.

워드프레스 개발을 하다 보면, 특정 조건에 맞는 포스트를 불러와야 하는 경우가 많습니다. 이를 위해 주로 WP_Query 클래스를 사용합니다. WP_Query는 조건에 맞는 포스트를 쉽게 쿼리할 수 있는 강력한 도구입니다. 이 글에서는 WP_Query를 사용해 포스트를 불러오는 방법을 살펴보겠습니다.

배열 생성

먼저, 쿼리에 사용할 조건들을 배열 형태로 정의합니다. 배열의 키는 쿼리의 조건을 나타내며, 값은 해당 조건에 맞는 값을 설정합니다.

예시 코드

$args = array(
    'posts_per_page' => 12, // 불러올 포스트의 수
    'category_name' => 'design', // 특정 카테고리의 포스트만 불러옴
    'author_name' => 'admin', // 특정 작성자의 포스트만 불러옴
    'order' => 'ASC', // 오름차순 정렬
    'orderby' => 'rand', // 랜덤 정렬
    'post_type' => 'post' // 포스트 타입을 'post'로 설정
);
$query = new WP_Query($args);

조건문과 반복문

조건문

WP_Query 객체를 생성한 후, if 문을 사용하여 쿼리 결과가 있는지 확인합니다.

<?php if ($query->have_posts()) : ?>

반복문

조건이 참이라면, while 문을 통해 쿼리 결과를 반복해서 출력합니다. 각 포스트는 the_post() 메서드를 통해 접근할 수 있습니다.

<?php while ($query->have_posts()) : $query->the_post(); ?>
    <div class="col-3">
        <?php get_template_part('content'); ?>
    </div>
<?php endwhile; ?>

포스트가 없는 경우

포스트가 없는 경우에는 else 문을 사용하여 대체 콘텐츠를 표시할 수 있습니다.

<?php else : ?>
    <?php get_template_part('content', 'empty'); ?>
<?php endif; ?>

유용한 파라미터

WP_Query에 사용할 수 있는 다양한 파라미터들이 있습니다. 그 중 몇 가지 유용한 것들을 소개합니다:

  • category_name: 특정 카테고리의 포스트를 불러올 때 사용
  • posts_per_page: 불러올 포스트의 수를 지정. -1로 설정하면 모든 포스트를 불러옵니다.
  • order: 정렬 순서. ASC는 오름차순, DESC는 내림차순
  • orderby: 정렬 기준. rand로 설정하면 랜덤으로 정렬됩니다.
  • post_type: 포스트 타입을 지정. 기본값은 post이며, page로 설정하면 페이지를 불러옵니다.

이처럼 WP_Query는 다양한 조건을 조합하여 원하는 포스트를 쉽게 쿼리할 수 있는 강력한 도구입니다. 자세한 내용은 워드프레스 공식 문서에서 확인할 수 있습니다.