친절한 우리 고모

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

  • 2025. 5. 6.

    by. 친절한 고모

    목차

      🔍 기본 워드프레스 검색의 한계

      워드프레스 기본 검색은 wp_posts.post_title과 post_content 만 검색하며,

      ❌ 느림 (대규모 DB 시)
      ❌ 정확도 낮음 (정렬 기준 없음)
      ❌ 커스터마이징 어려움 (필터/조건 추가 불가)

      👉 검색 경험을 강화하기 위해 다음과 같은 기술이 필요합니다:

      • WP_Query 확장 (커스텀 필드, 텍소노미 포함)
      • Ajax 실시간 검색
      • ElasticSearch 등 외부 검색엔진 연동

      🔍 기본 워드프레스 검색의 한계


      ✅ 1. WP_Query 커스터마이징 – 고급 조건 검색

      🔧 메타 필드 포함 검색

      php
      복사편집
      $args = array( 'post_type' => 'product', 'meta_query' => array( array( 'key' => 'brand', 'value' => 'apple', 'compare' => 'LIKE' ) ), 's' => 'macbook' ); $query = new WP_Query($args);

      📌 기본 검색 + 커스텀 필드 필터링 동시 적용 가능


      💡 텍소노미 + 키워드 통합 검색 예

      php
      복사편집
      $args = array( 's' => '디자인', 'tax_query' => array( array( 'taxonomy' => 'portfolio_category', 'field' => 'slug', 'terms' => array('branding', 'uiux'), ) ) );

      ⚡ 2. Ajax 기반 라이브 검색 구현

      ① JS (예: 검색 입력 시 Ajax 요청)

      javascript
      복사편집
      document.getElementById('search-input').addEventListener('input', function(e) { fetch(`/wp-admin/admin-ajax.php?action=live_search&term=${e.target.value}`) .then(res => res.text()) .then(html => { document.getElementById('search-results').innerHTML = html; }); });

      ② PHP – Ajax 처리

      php
      복사편집
      add_action('wp_ajax_live_search', 'handle_live_search'); add_action('wp_ajax_nopriv_live_search', 'handle_live_search'); function handle_live_search() { $term = sanitize_text_field($_GET['term'] ?? ''); $query = new WP_Query(array( 's' => $term, 'posts_per_page' => 5, )); while ($query->have_posts()) : $query->the_post(); echo '<p><a href="' . get_permalink() . '">' . get_the_title() . '</a></p>'; endwhile; wp_die(); }

      📌 실시간 검색 결과 출력 UI는 자유롭게 구성 가능


      🧠 3. ElasticSearch 연동 – 대용량 데이터 & 빠른 검색

      ElasticSearch 장점

      기능설명
      초고속 인덱싱 수만 건의 포스트도 밀리초 검색
      정렬, 필터, 랭킹 점수 기반 결과 정렬 가능
      복합 필드 검색 제목 + 태그 + 커스텀 필드 검색
      한글 형태소 분석 nori 분석기 사용 시 효과적
       

      연동 방식

      방법설명
      ElasticPress 플러그인 공식 API 연동 가능
      WP Search with Algolia SaaS 기반 검색엔진
      직접 REST 연동 ElasticSearch 서버 직접 구축 + WP 연동
       

      ElasticPress 사용 예

      1. 플러그인 설치
      2. .env 또는 wp-config.php에 호스트 설정
      php
      복사편집
      1. 인덱싱 실행
      bash
      복사편집
      wp elasticpress index --setup
      1. WP_Query 확장 없이도 자동 인덱싱 + 고속 검색

      🔎 고급 검색 UX 요소

      기능구현 방식
      자동완성 JavaScript + Ajax + Post title prefix
      연관 검색어 인기 키워드 DB 저장 → 추천
      필터 검색 WP_Query + Checkbox → tax_query/meta_query로 전달
      무한 스크롤 결과 Ajax + offset + posts_per_page
       

      ✅ 검색 시스템 개선 체크리스트

      항목완료 여부
      WP_Query 기반 커스텀 검색 로직 구성 ✅ / ❌
      Ajax 실시간 검색 UI 구현 ✅ / ❌
      대용량 대응을 위한 ElasticPress or Algolia 연동 ✅ / ❌
      검색 결과 정렬 기준 및 UX 개선 ✅ / ❌
      검색 키워드 기록 및 분석 기능 구축 ✅ / ❌