워드프레스 포스트 및 페이지, 카테고리별 위젯 메뉴 다르게 출력하기


워드프레스는 보통 사이드바 영역에 위젯을 만들거나, 푸터 영역에 위젯을 추가하여 운영자가 직접 위젯 영역을 변경할 수 있도록 제공하고 있습니다.

국내 홈페이지의 경우 좌측에 현재 선택된 메뉴를 출력해서 화면을 구성하는것이 대부분입니다.

그러나 워드프레스의 경우 사이드바 영역에 메뉴를 출력하는 방식은 잘 사용하지 않고, 최근글, 검색, 배너등을 사용해서 화면을 꾸미는것이 대부분이며 또한 포스트, 페이지, 카테고리등 모든 페이지에 동일한 사이드바 화면을 구성하는방법을 사용하고 있습니다.

그렇다면 국내 홈페이지 처럼 각 메뉴에 따라 사이드바가 다른 위젯을 출력하려면 어떻게 해야 할까 ?

먼저 워드프레스에서 위젯이 나올수 있는 위치를 파악하여야 합니다.

위젯 노출 위치

  • Site Index
  • Post
  • Page
  • Media
  • Category
  • Search
  • Date
  • Author
  • Tag
  • Taxonomy
  • Post Type
  • Post Format
  • 404 Layout

이 처럼 사이드바를 각각 노출할 수 있는 기본 단위만 13개 정도이며, 테마 폴더내에 파일이름과 ID 또는 SLUG 이름으로 구분하여 더 많은 위젯 노출을 만들수 있습니다.

예를 들어 게임과 모바일 이라는 2개의 카테고리가 있으며, 여기에 다른 위젯을 출력하는 방법을 예로 해 보겠습니다.

파일 생성 예)

  • category-game.php
  • category-mobile.php

위 처럼 카테고리와 ID, SLUG 형태로 파일 이름을 작성합니다.

category-game.php 내에 사이드바 위치에 있는 위젯 이름을 다른것으로 수정하여 사용하면 됩니다.

<div id="content">본문 내용</div>
<div id="sidebar"></div>

category-mobile.php 내에 사이드바 위치에 있는 위젯 이름을 다른것으로 수정하여 사용하면 됩니다.

<div id="content">본문 내용</div>
<div id="sidebar"></div>

위 처럼 카테고리별 위젯을 다르게 출력하는것은 카테고리의 SLUG 이름으 파일을 생성하는것으로 간단하게 구현이 가능합니다.

그 외에 형식에 대해서는 조금 복잡할 수 있습니다.

포스트나 페이지의 경우 SLUG 를 이용한 파일 이름을 생성해야 한다면, 대량의 파일을 만들어야 하는 문제가 발생합니다. 이런 경우는 아래와 같이 2가지 정도의 방법으로 해결합니다.

  • 포스트, 페이지 메타박스에서 노출할 위젯 정보를 입력.
  • post.php, page.php 파일내에 포스트의 ID 값으로 위젯 출력 결정.

포스트를 작성할때 이미 어떠한 위젯을 노출할지 메타박스에서 선택하면 편리하게 사용 가능합니다.

[플러그인 다운로드]

먼저 포스트나 페이지에서 어떠한 메뉴를 출력할지 선택할 수 있는 메타박스 입니다.

메타박스는 워드프레스에서 등록한 메뉴가 출력되며, 선택하여 결정합니다.

포스트 및 페이지에서 메타박스를 출력하는 플러그인 입니다.

관리자 위젯 에서 “Sidebar Menu” 를 추가합니다.

포스트 및 페이지, 카테고리별 등에 출력할 메뉴를 설정합니다.

카테고리별 메뉴가 출력될 수 있도록 테마 폴더에 카테고리별 파일을 생성합니다.

빨간색 박스는 <?php get_sidebar(); ?> 를 제거하고, 위젯을 출력하도록 변경한 것입니다.

화면 우측 사이드바를 보시면 메뉴가 변경 되는것을 확인 할 수 있습니다.