친절한 우리 고모

친절한 고모의 친절한 이야기

  • 2025. 4. 29.

    by. 친절한 고모

    목차

      🔍 WP_Query란?

      WP_Query는 워드프레스 내 모든 콘텐츠(Post, Page, CPT 등)
      조건에 맞게 조회할 수 있도록 해주는 클래스입니다.

      기본적인 글 목록 조회는 물론,

      • 특정 메타 필드 값 필터링
      • 특정 카테고리/태그 조건 검색
      • 가격순, 평점순 정렬
      • 복합 조건 필터링

      👉 전부 WP_Query로 가능합니다!

       

      🔍 WP_Query란?


      ✅ WP_Query 기본 구조

      php
      복사편집
      $args = array( 'post_type' => 'post', 'posts_per_page' => 10, ); $query = new WP_Query($args); if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); the_title(); endwhile; endif; wp_reset_postdata();

      🧩 메타쿼리(Meta Query) – 커스텀 필드 값 조건 검색

      커스텀 필드(meta_key, meta_value) 를 기준으로
      글을 필터링하고 싶을 때 사용합니다.


      1. 단일 메타쿼리 예시

      php
      복사편집
      $args = array( 'post_type' => 'product', 'meta_query' => array( array( 'key' => 'price', 'value' => 50000, 'compare' => '>=', 'type' => 'NUMERIC' ) ) ); $query = new WP_Query($args);

      📌 compare: 비교 연산자 (=, >, <, LIKE 등)
      📌 type: 데이터 타입 (NUMERIC, CHAR, DATE 등)


      2. 복합 메타쿼리 (AND/OR 조건)

      php
      복사편집
      $args = array( 'post_type' => 'product', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'price', 'value' => 50000, 'compare' => '>=', 'type' => 'NUMERIC' ), array( 'key' => 'stock', 'value' => 1, 'compare' => '>=', 'type' => 'NUMERIC' ) ) );

      → 가격이 5만 원 이상, 재고가 1개 이상인 상품만 조회


      🧩 텍소노미쿼리(Taxonomy Query) – 카테고리, 태그, 커스텀 분류 검색

      카테고리(category), 태그(post_tag),
      **커스텀 분류법(custom taxonomy)**에 따라 포스트를 필터링합니다.


      텍소노미쿼리 기본 예시

      php
      복사편집
      $args = array( 'post_type' => 'portfolio', 'tax_query' => array( array( 'taxonomy' => 'portfolio_category', 'field' => 'slug', 'terms' => 'branding', ) ) );

      → portfolio_category 분류 중, branding 슬러그에 속한 포스트만 조회


      복합 텍소노미쿼리 (AND/OR)

      php
      복사편집
      $args = array( 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'portfolio_category', 'field' => 'slug', 'terms' => 'branding' ), array( 'taxonomy' => 'project_type', 'field' => 'slug', 'terms' => 'web' ) ) );

      → 브랜딩 카테고리이면서 웹 프로젝트 타입인 것만 필터링


      🧩 커스텀 정렬 (orderby)

      1. 메타 값 기준 정렬

      php
      복사편집
      $args = array( 'post_type' => 'product', 'meta_key' => 'price', 'orderby' => 'meta_value_num', 'order' => 'ASC' );

      → price 필드 기준으로 오름차순 정렬

      📌 주의: meta_key + meta_value_num 설정 필요


      2. 인기순, 평점순 정렬 커스텀

      예를 들어, 리뷰 평점(rating) 기준 정렬:

      php
      복사편집
      $args = array( 'post_type' => 'review', 'meta_key' => 'rating', 'orderby' => 'meta_value_num', 'order' => 'DESC' );

      → 평점 높은 순서로 리뷰 리스트 표시


      🔥 실전 예제: 가격 + 카테고리 동시 필터링

      php
      복사편집
      $args = array( 'post_type' => 'product', 'meta_query' => array( array( 'key' => 'price', 'value' => 30000, 'compare' => '>=', 'type' => 'NUMERIC' ) ), 'tax_query' => array( array( 'taxonomy' => 'product_category', 'field' => 'slug', 'terms' => array('shoes', 'accessories'), 'operator' => 'IN' ) ), 'orderby' => 'meta_value_num', 'meta_key' => 'price', 'order' => 'ASC' );

      → 가격 3만 원 이상, 'shoes' 또는 'accessories' 카테고리에 속하는 상품을 가격 오름차순 정렬!


      ✅ WP_Query 고급 활용 체크리스트

      항목완료 여부
      메타쿼리 조건 검색 사용 ✅ / ❌
      텍소노미쿼리 조건 필터링 적용 ✅ / ❌
      커스텀 필드 정렬 설정 완료 ✅ / ❌
      복합 메타 + 텍소 쿼리 조합 테스트 ✅ / ❌
      퍼포먼스 최적화 (쿼리 캐싱, LIMIT 설정) ✅ / ❌