피드로 돌아가기
Dev.toBackend
원문 읽기
pre_get_posts Hook을 통한 DB 쿼리 최적화 및 품절 상품 자동 필터링 구현
How to Hide Out-of-Stock Products on Your WordPress Website
AI 요약
Context
WordPress 기본 쇼핑몰 구조에서 품절 상품이 계속 노출됨에 따라 발생하는 사용자 경험 저하 문제. 애플리케이션 레이어에서의 단순 필터링은 불필요한 데이터 로드와 렌더링 비용을 발생시키는 한계 존재.
Technical Solution
- pre_get_posts Action Hook을 활용하여 DB Query 실행 전 단계에서 데이터 필터링 수행
- !is_admin() 및 is_main_query() 조건 검증을 통한 관리자 페이지 영향도 배제 및 메인 쿼리 무결성 유지
- is_shop(), is_product_category() 등 특정 Page Context를 식별하여 타겟팅된 쿼리 수정 적용
- Meta Query 내 _stock_status 키값을 'NOT IN' 연산자로 처리하여 'outofstock' 상태 데이터 원천 배제
- 기존 meta_query 배열을 유지한 상태에서 새로운 조건을 Append 하는 방식으로 다른 플러그인과의 호환성 확보
실천 포인트
- DB Query 단계에서 불필요한 레코드를 제거하여 메모리 사용량과 응답 시간 최적화 검토 - 전역 Hook 사용 시 is_admin()과 같은 Context 체크를 통해 예기치 못한 Side Effect 방지 - 메타데이터 기반 필터링 도입 시 인덱스 설정 여부 확인을 통한 쿼리 성능 저하 가능성 체크