WordPress 플러그인 없이 SEO 하는 법: 코드로 직접 구현하는 고성능 SEO 인사이트
Yoast·RankMath 없이도 WordPress SEO를 완성하는 코드 기반 접근법을 소개합니다. 메타 태그, 구조화 데이터, 사이트맵 등을 직접 구현해 사이트 속도와 SEO를 동시에 개선합니다.
공식 참고 자료
다음 실행
실행 기준 요약
| 먼저 볼 것 | Yoast·RankMath 없이도 WordPress SEO를 완성하는 코드 기반 접근법을 소개합니다. 메타 태그, 구조화 데이터, 사이트맵 등을 직접 구현해 사이트 속도와 SEO를 동시에 개선합니다. |
|---|---|
| 발행 전 점검 | WordPress SEO, 플러그인없는SEO, 워드프레스최적화 |
| 다음 학습 | SEO 콘텐츠 최적화 허브 |
발행 전 체크리스트
- WordPress SEO를 적용할 페이지나 채널을 하나만 정합니다.
- 본문의 핵심 주장과 예시가 실제 실행 순서로 이어지는지 확인합니다.
- 관련 도구로 제목, 설명, 링크, CTA를 발행 전에 한 번 더 점검합니다.
발행일: 2026-05-18 · 분야: insights · 읽는 시간: 13분
핵심 개요
워드프레스 SEO를 이야기할 때 Yoast SEO나 RankMath를 먼저 떠올리는 것은 자연스러운 일입니다. 두 플러그인 모두 기능이 훌륭하고 설정이 편리하며 수많은 사용자가 검증한 도구입니다. 그런데 한 가지 잘 알려지지 않은 사실이 있습니다. 이 플러그인들이 사이트에 추가하는 JavaScript와 CSS, 데이터베이스 쿼리가 생각보다 무겁다는 것입니다. 실제로 Yoast SEO 활성화 시 페이지 크기가 평균 40~80KB 증가하고, 페이지 로딩 시간이 0.3~0.8초 더 걸리는 경우가 측정됩니다. 고성능 서버라면 체감하기 어렵지만, 공유 호스팅이나 저가 VPS 환경에서는 Core Web Vitals 점수에 직접 영향을 미칩니다. LCP(최대 콘텐츠 페인트)가 0.5초 나빠지면 구글 평가에서 '개선 필요' 등급으로 떨어지는 사이트들이 있습니다. 더 핵심은 SEO 플러그인이 하는 대부분의 일이 실제로 수십~수백 줄의 PHP 코드와 functions.php 수정으로 대체될 수 있다는 사실입니다. 메타 태그 삽입, Open Graph 태그, 구조화 데이터(Schema.org), XML 사이트맵, robots.txt 제어, canonical 태그 같은 핵심 SEO 기능은 모두 플러그인 없이 직접 구현 가능합니다. 이 방법이 모든 사람에게 권장되는 것은 아닙니다. PHP에 대한 기본 이해와 functions.php 수정 경험이 있어야 합니다. 하지만 다수의 사이트를 운영하거나, 퍼포먼스가 수익에 직결되는 프로젝트를 맡고 있거나, 플러그인 의존도를 줄이고 싶은 운영자라면 충분히 투자할 가치가 있는 접근법입니다. 이 글에서는 플러그인 의존도를 낮추고 코드로 SEO를 직접 제어하는 방법과, 그것이 사이트 성능과 검색 순위에 가져오는 실질적 이점을 소개합니다.
플러그인 없이 메타 태그를 직접 구현하는 방법
SEO 메타 태그의 핵심은 title 태그와 meta description입니다. 워드프레스는 wphead() 훅을 통해 head 섹션에 콘텐츠를 삽입할 수 있습니다. functions.php에 addaction('wphead', 'custommetatags')를 추가하고, 단일 포스트·페이지·아카이브·홈페이지 각각에 맞는 title과 description을 동적으로 생성하는 함수를 작성하면 됩니다. 예를 들어 단일 포스트에서는 getthetitle()과 gettheexcerpt() 또는 커스텀 필드로 저장한 SEO 설명을 가져와 출력합니다. addthemesupport('titletag')를 사용해 워드프레스 기본 title 생성을 활성화하면, 별도 코드 없이도 SEO 타이틀이 올바르게 출력됩니다. Open Graph 태그(og:title, og:description, og:image, og:url 등)도 같은 방식으로 wphead 훅에 추가하면 소셜 미디어 공유 시 올바른 미리보기가 나옵니다. og:image는 글의 특성 이미지(Featured Image)를 동적으로 가져오도록 구현할 수 있습니다. getthepostthumbnailurl() 함수를 사용하면 됩니다. 트위터 카드 메타 태그(twitter:card, twitter:title, twitter:description, twitter:image)도 함께 추가하면 X(구 트위터) 공유 최적화까지 한 번에 해결됩니다. 직접 구현한 메타 태그는 플러그인보다 코드가 가볍고, 정확히 필요한 태그만 출력되므로 불필요한 오버헤드가 없습니다. 메타 설명이 없는 포스트에서는 gettheexcerpt()나 wptrimwords(getthecontent(), 30)로 자동 생성하는 로직도 추가할 수 있습니다.
구조화 데이터(Schema.org) 코드로 직접 삽입하기
구조화 데이터는 검색 엔진이 콘텐츠 유형과 의미를 더 잘 이해하도록 돕는 JSONLD 형식의 마크업입니다. 검색 결과에 별점, FAQ, 이벤트, 레시피 같은 리치 스니펫을 표시하게 하는 기술적 기반입니다. RankMath나 Yoast가 제공하는 구조화 데이터 기능을 플러그인 없이 구현하려면 wphead 훅에 JSONLD 스크립트를 동적으로 출력하는 함수를 추가하면 됩니다. 블로그 포스트라면 Article 또는 BlogPosting 타입을 사용합니다. BlogPosting 스키마에는 headline(포스트 제목), author(저자 정보와 url), datePublished(발행일, ISO 8601 형식), dateModified(수정일), image(대표 이미지 URL과 크기), description(설명), publisher(발행자 정보)를 포함시키면 구글 리치 스니펫 적용 가능성이 높아집니다. FAQ 스키마는 특히 효과적입니다. FAQPage 타입으로 각 FAQ 항목의 질문(Question)과 답변(Answer)을 마크업하면 검색 결과에서 직접 FAQ가 표시될 가능성이 높아져 클릭률이 향상됩니다. 실제로 FAQ 스키마를 적용한 한 사이트에서 평균 검색 CTR이 3.1%에서 5.8%로 약 87% 상승한 데이터가 있습니다. 음성 검색과 AI 답변 인용에도 FAQ 스키마 콘텐츠가 활용됩니다. 로컬 비즈니스 사이트라면 LocalBusiness 타입을 사용해 사업체명, 주소, 전화번호, 영업시간, 좌표를 마크업합니다. 구현 후에는 구글 리치 스니펫 테스트 도구(search.google.com/test/richresults)와 schema.org/validator로 마크업이 올바르게 인식되는지 반드시 검증해야 합니다.
XML 사이트맵을 플러그인 없이 생성하는 방법
워드프레스 5.5 버전부터는 코어에 기본 사이트맵 기능이 내장되어 있습니다. yoursite.com/wpsitemap.xml에 접속하면 기본 사이트맵이 자동으로 생성됩니다. 간단한 블로그라면 이 기본 사이트맵으로 충분합니다. 그러나 더 세밀한 제어가 필요할 때는 커스텀 사이트맵 구현이 필요합니다. 특정 포스트 타입이나 카테고리를 제외하거나, 우선순위(priority)와 변경 빈도(changefreq)를 수동으로 설정하거나, hreflang 태그(다국어 사이트)를 추가해야 할 때입니다. 커스텀 사이트맵 구현 방법은 addaction('init', 'registersitemaprewriterules')를 통해 커스텀 URL을 등록하고, 해당 URL 요청 시 WPQuery로 포스트 목록을 불러와 XML 형식으로 출력하는 함수를 작성합니다. header('ContentType: application/xml')을 출력하고 WordPress XML 형식에 맞게 each post의 loc(URL), lastmod(수정일), changefreq, priority를 출력합니다. 이 방식의 장점은 플러그인 없이 사이트맵 생성 로직을 완전히 제어할 수 있다는 것입니다. 불필요한 URL(검색 결과 페이지, 파라미터 URL, 첨부파일 페이지 등)을 제외하거나, 이미지 사이트맵을 별도로 생성하거나, 비디오 사이트맵을 추가하는 등 고급 설정이 자유롭습니다. 사이트맵을 생성한 후에는 구글 서치 콘솔과 네이버 서치어드바이저에 각각 등록해 크롤링을 요청합니다.
robots.txt와 canonical 태그 코드 기반 관리
robots.txt는 검색 엔진 크롤러에게 어느 페이지를 크롤링할 수 있는지 알려주는 파일입니다. 워드프레스에서는 robotstxt 필터 훅을 사용해 동적으로 robots.txt 내용을 제어할 수 있습니다. 이 방법의 장점은 운영 환경(운영/스테이징)에 따라 다른 robots.txt를 출력할 수 있다는 것입니다. 크롤링을 차단해야 하는 주요 경로는 /wpadmin/, /wpincludes/, 검색 결과 페이지(?s=), 파라미터 URL, 첨부파일 페이지(/attachment/), 관리자 페이지 등입니다. 반면 sitemap.xml URL은 명시적으로 허용하는 것이 좋습니다. 크롤링 예산(Crawl Budget)을 효율적으로 사용하려면 중요한 페이지에 크롤러 자원이 집중되도록 불필요한 URL을 차단하는 것이 중요합니다. Canonical 태그는 중복 콘텐츠 문제를 방지하는 핵심 SEO 태그입니다. 워드프레스에서 중복 콘텐츠가 발생하는 상황은 페이지네이션 URL, 파라미터 URL, 카테고리와 태그 중복, WooCommerce 상품 필터링 등 다양합니다. relcanonical 필터 훅을 사용하면 각 페이지 유형에 맞는 canonical URL을 동적으로 출력할 수 있습니다. 특히 WooCommerce 환경에서 상품 필터링으로 생성되는 수많은 파라미터 URL에 canonical 태그를 일괄 적용하면 중복 콘텐츠 이슈를 효과적으로 해결할 수 있습니다. 예를 들어 ?color=blue&size=M 같은 파라미터 URL에 대해 파라미터가 없는 깨끗한 URL을 canonical로 지정하면 됩니다. 구현 후 구글 서치 콘솔의 URL 검사 도구로 각 페이지의 canonical이 올바르게 인식되는지 확인해야 합니다.
성능 최적화와 SEO의 시너지: Core Web Vitals 개선
SEO 플러그인을 코드로 대체하는 가장 큰 이점 중 하나는 사이트 성능 개선입니다. Yoast SEO 제거 후 PageSpeed Insights 점수가 10~20점 향상됐다는 사례가 꾸준히 보고됩니다. 플러그인이 로드하던 CSS와 JavaScript가 줄어들면서 LCP(최대 콘텐츠 페인트)와 FID(첫 입력 지연)/INP(다음 페인트까지 상호작용)가 개선되기 때문입니다. 코드 기반 SEO 구현과 함께 다음 최적화를 병행하면 Core Web Vitals 전체를 개선할 수 있습니다. 첫째, 이미지 lazy loading(loading='lazy' 속성)과 WebP 변환을 적용합니다. 이미지는 LCP에 직접 영향을 주는 요소입니다. 둘째, 불필요한 플러그인을 비활성화하고 삭제합니다. 플러그인 10개를 줄이면 페이지 로딩이 0.3~0.8초 빨라지는 경우가 흔합니다. 셋째, 사용하지 않는 CSS를 제거합니다(wpdequeuestyle 함수 활용). 넷째, 서버 측 캐싱과 GZIP 압축을 .htaccess에서 직접 설정합니다. 한 실제 사례에서 Yoast SEO를 코드로 대체하고 이미지 최적화와 캐싱을 직접 구현한 결과, PageSpeed 모바일 점수가 58점에서 87점으로 향상되고 LCP가 4.2초에서 1.9초로 단축되었습니다. 구글 서치 콘솔의 Core Web Vitals 리포트를 정기적으로 확인하고, PageSpeed Insights와 GTmetrix로 개선 전후를 측정하면 코드 기반 SEO 구현의 실질적 성과를 확인할 수 있습니다.
마무리
플러그인 없이 WordPress SEO를 구현하는 것은 처음에는 진입 장벽이 있지만, 한 번 구축해두면 사이트 성능과 SEO 제어력을 동시에 높이는 강력한 방법입니다. 메타 태그, 구조화 데이터, 사이트맵, canonical 태그, robots.txt를 코드로 직접 관리하면 불필요한 플러그인 의존도를 낮추고 Core Web Vitals를 개선할 수 있습니다. 특히 다수의 사이트를 운영하거나 퍼포먼스가 중요한 프로젝트라면, 초기 코드 구현 비용 이상의 가치를 장기적으로 얻을 수 있습니다. SEO 플러그인이 필요 없다는 것이 아니라, 그 플러그인들이 하는 일을 이해하고 필요에 따라 직접 구현할 수 있는 능력을 갖추면 더 깊은 SEO 최적화가 가능해진다는 의미입니다. 플러그인 없이 SEO를 구현하면서 가장 큰 부수효과는 WordPress의 작동 원리를 더 깊이 이해하게 된다는 점입니다. 이 이해가 다음 최적화 작업을 훨씬 빠르고 정확하게 만들어줍니다.
자주 묻는 질문
플러그인 없는 SEO 구현이 초보자에게도 가능한가요?
기본적인 PHP와 HTML 지식이 있다면 충분히 가능합니다. functions.php 수정이 익숙하다면 메타 태그와 Open Graph 태그부터 시작하세요. 구조화 데이터나 커스텀 사이트맵은 조금 더 복잡하지만, 잘 작성된 스니펫 코드를 참조하면 단계별로 구현할 수 있습니다. 완전한 초보자라면 Rank Math 무료 버전을 먼저 사용하면서 WordPress SEO 원리를 이해한 후, 코드 구현을 시도하는 순서가 안전합니다. 수정 전에 반드시 백업을 해두세요.
Yoast SEO를 제거하면 기존에 입력한 메타 설명이 사라지나요?
Yoast SEO가 저장한 메타 설명은 해당 플러그인 전용 데이터베이스 필드(yoastwpseometadesc 등)에 저장됩니다. 플러그인 제거 전에 코드 기반 대체 구현을 준비하고, 커스텀 필드를 활용해 기존 데이터를 마이그레이션하는 스크립트를 작성하거나 수동으로 이전하는 과정이 필요합니다. WP CLI를 사용해 데이터베이스를 쿼리하면 기존 Yoast 메타 데이터를 CSV로 추출한 후 새 구조로 가져오는 방법이 가장 효율적입니다.
SEO 플러그인 없이 구현할 때 가장 자주 놓치는 부분은 무엇인가요?
페이지네이션 canonical 태그 처리와 아카이브 페이지(카테고리, 태그, 날짜별 아카이브) 메타 태그 설정을 자주 놓칩니다. 또한 커스텀 포스트 타입(Custom Post Type)을 사이트맵에 포함시키는 것도 빠지기 쉽습니다. 첨부파일 페이지의 noindex 처리도 중요합니다. 미디어 업로드 시 자동 생성되는 첨부파일 페이지가 색인되면 중복 콘텐츠 문제가 생깁니다. 구현 후 구글 서치 콘솔의 URL 검사 도구로 각 페이지 유형을 개별 확인하는 검수 과정이 필수입니다.
WordPress 기본 내장 사이트맵과 커스텀 사이트맵 중 어느 것이 더 낫나요?
단순한 블로그라면 WordPress 5.5 이상의 기본 내장 사이트맵(wpsitemap.xml)으로 충분합니다. 그러나 커스텀 포스트 타입 제어, 특정 페이지 제외, lastmod 정확성 확보, hreflang 태그(다국어 사이트) 추가, 이미지 사이트맵 분리 같은 고급 제어가 필요하다면 커스텀 사이트맵 구현이 더 유리합니다. 일반적으로 글이 500개 미만의 블로그는 기본 사이트맵, 그 이상이거나 복잡한 URL 구조를 가진 사이트는 커스텀 사이트맵을 권장합니다.
코드 기반 SEO 구현이 완료됐는지 어떻게 검증하나요?
구글 서치 콘솔 URL 검사 도구에서 각 페이지 유형(홈, 포스트, 카테고리, 검색 결과)의 메타 태그를 확인합니다. 구조화 데이터는 구글 리치 스니펫 테스트(search.google.com/test/richresults)와 schema.org/validator로 검증합니다. 소셜 미디어 공유 미리보기는 Facebook Open Graph Debugger(developers.facebook.com/tools/debug)와 트위터 카드 밸리데이터로 확인합니다. View Source(페이지 소스 보기)로 HTML head 태그를 직접 점검하는 방법도 빠르고 확실합니다.
다음 단계
상단의 관련 크레피카 도구를 활용해 초안을 점검한 뒤, 이 가이드로 돌아와 최종 발행 전 구조와 표현을 다시 확인하세요.
사이트 검토 정보
크레피카는 크리에이터와 마케터를 위한 무료 유틸리티 사이트입니다. 실무 도구, 편집 가이드, 문의 정보, 개인정보처리방침, 이용약관, RSS, robots.txt, ads.txt, 사이트맵을 제공해 사용자와 검색엔진이 자바스크립트 렌더링에만 의존하지 않고 사이트 구조를 이해할 수 있게 합니다.
광고는 Google AdSense 자동 광고로 노출될 수 있습니다. 이 정적 크롤러 페이지에는 수동 광고 슬롯을 삽입하지 않으며, 광고는 도구 결과나 편집 추천 내용에 영향을 주지 않습니다.