Posted in 튜토리얼&팁

워드프레스 is_home(), is_front_page() 활용 – 첫화면에서 구글 애드센스 제어

워드프레스 컨디셔널 태그 – WordPress Conditional tag

워드프레스에서는 Conditional Tag – 컨디셔널 태그라고 상황에 따라 화면에 노출되는 내용을 제어해주는 기능이 있습니다. 먼저 제가 겪은 상황을 하나 예를 들어보겠습니다.

CASE – 구글 애드센스 광고 삽입과 관련된 문제

구글애드센스 광고를 손쉽게 삽입해줄 수 있는 easy adsense 라는 플러그인을 사용하고 있었습니다. 워드프레스는 플러그인이 운영을 편리하게 도와주지만, 플러그인이 많을수록 사이트가 무겁고 느려집니다. 웹브라우저에 보여지기까지 이것저것 불러들어야할 것들이 많아진다는 이야기죠.

하지만 구글 애드센스 광고를 굳이 그렇게까지 플러그인에 의존해서 과한 로딩을 만들어주고 싶지 않아서 직접 코드를 삽입하기로 했습니다. 그런데 문제가 생겼습니다. 테마에 따라 다르게 설정되어있습니다만, 워드프레스 상에서 TwentySeventeen 테마의 single.php 기본 코드를 확인해보면 아래와 같은 구문이 발견됩니다.

content라는 템플릿을 호출해서 사용한다는 이야기인데요. 해당 템플릿 파일은 themes/twentyseventeen/template-parts/post/content.php  이런 경로를 타고 가서 필요한 내용을 불러다 쓰게 만들어져 있습니다.

대략적으로 구조를 단순하게 파악하자면 아래와 같이 이해할 수 있습니다.

그래서 본문에 구글 애드센스 소스코드를 삽입하면, 아래와 같이 정상적으로 글 상단에 연금저축과 관련된 광고가 노출되는 구글애드센스가 삽입된게 보입니다.

구글애드센스
본문에서는 원하는 위치에 제대로 삽입된것이 확인됩니다.

그런데 문제는 목록화면에서도 제가 삽입한 구글 애드센스 코드가 노출된다는겁니다. 바로 아래사진처럼 말이죠.

구글애드센스
제목과 섬네일이미지와 구글애드센스가 죄다 뒤섞여있는 총체적인 난국입니다.

제가 원하는건 그저 본문 상단과 하단에 노출되는 것인데, 이렇게 컨텐츠를 죄다 가리는 상황을 바라는건 아니었습니다. 그래서 이 상황을 어떻게 해결해야하나 보니 컨디셔널 태그를 활용하면 된다는 답을 얻었습니다. 역시 구글.

컨디셔널 태그 Conditional Tag

컨디셔널 태그는 워드프레스 코덱스 페이지  에서 더 많은 상황을 제어할 수 있도록 소개하고 있지만, 저는 지금 첫 화면에서 보여지는 목록에서 구글애드센스가 뜨지 않도록 하고 싶은 상황이기 때문에 is_home() 과 is_front_page() 컨디셔널 태그를 활용하기로 했습니다. is_front_page() 만 사용해도 해결이 되는 상황입니다만, 블로그 페이지를 따로 보여질 상황을 위해서 is_home() 까지 설정해주는 것이 권장되는 상황입니다.

보통 첫화면 에서 is_home() 과 is_front_page()를 동시에 사용할 경우엔 아래와 같은 방식으로 사용됩니다.

위의  php 코드 내용은 이런 뜻입니다 “만약에 첫 화면(정적인페이지,최근글) 그리고 블로그 화면 이라면 수행해야할 명령” 그런데 제가 하고 싶은건 첫화면이나 블로그 화면이라면 하지마! 라는 명령을 하고 싶은 상황입니다. 그런 경우엔 아래처럼 사용해야합니다.

차이점은 느낌표가 앞에 들어간 겁니다. 보통 프로그래밍을 배울때 if문을 배울때 느낌표가 앞에 들어가면 not이라는 의미라고 설명합니다만, 저는 이해가 잘 안가더군요. 그래서 그냥 이해하기 쉽게 이야기하자면 저런 상황에서는 이런걸 하지말라는 의미로 쓰는겁니다.

그래서 위의 컨디셔널 태그를 활용해서 구글 애드센스가 첫화면에서는 보여지지 말라고, 느낌표를 붙여서 소스 코드를 삽입해주었더니 정상적으로 작동하게 됐습니다.그 결과는 아래와 같습니다.

애드센스
지저분하게 구글애드센스가 목록에 노출되지 않게 되었습니다

0

Written by 코르니유

방황하는 일러스트레이터. 질풍노도의 웹/그래픽편집디자이너. 귀가가 귀찮아 외출도 귀찮은 스페셜 귀차니스트. 철부지들을 싫어하지만, 정작 본인은 철들기를 거부하는 30대 아저씨