워드프레스에서 페이지마다 다른 헤더/푸터 사용하기

Last Updated: 2023년 06월 22일 | | 20개 댓글

페이지마다 다른 헤더나 푸터를 사용하려는 경우 페이지마다 다른 템플릿을 만들면 됩니다(페이지 템플릿을 만드는 방법은 이 글에서 중간 부분을 참조하세요). 하지만 페이지마다 템플릿을 만드는 작업이 귀찮은 경우 간단한 조건문을 사용하여 페이지/카테고리별로 다른 헤더/푸터를 불러오도록 설정할 수 있습니다.

[ 이 글은 2023년 6월 21일에 마지막으로 수정되었습니다. ]

엘리멘터 페이지 빌더/Divi 테마/아바다 테마 등에서 페이지마다 다른 헤더/푸터 지정하기

이 글을 작성한 이후에 워드프레스 테마나 페이지 빌더에서 대시보드 내에서 헤더에서 푸터까지 사이트의 모든 요소를 쉽게 커스텀할 수 있는 전체 사이트 편집(Full Site Editing) 기능이 도입되었습니다.

유명한 Elementor 페이지 빌더의 프로 버전에 탑재된 테마 빌더를 사용하여 페이지/카테고리 등에 따라 다른 헤더나 푸터, 포스트 템플릿 등을 지정할 수 있습니다.

다음 그림은 Divi 테마의 테마 빌더를 사용한 템플릿 만들기 화면을 보여줍니다. 전역(Global)헤더와 전역 본문, 전역 푸터를 지정할 수 있고, 개별 페이지나 글, 카테고리, 상품 페이지 등에 대하여 다른 헤더, 바디, 푸터를 지정할 수 있습니다.

전체 사이트 편집 기능 - Divi 테마
Divi 테마의 Theme Builder (테마 빌더)

아바다, Divi 등의 테마나 엘리멘터 페이지 빌더에서 제공하는 전체 사이트 편집 기능을 사용하면 코딩 지식이 없어도 테마 파일을 수정하지 않고 사이트의 각 요소를 쉽게 커스텀할 수 있습니다. 자세한 내용은 다음 글을 참고해보세요:

매거진, 블로그용 테마인 뉴스페이퍼 테마도 클라우드 라이브러리(Cloud Library)를 도입하여 각 파트를 수월하게 커스텀할 수 있습니다.

또한, 워드프레스도 5.9 버전부터 블록 기반 테마를 도입하여 워드프레스 알림판 내에서 사이트의 모든 섹션을 편집할 수 있는 전체 사이트 편집(FSE) 기능을 제공하고 있습니다. 최초의 블록 기반 테마인 Twenty Twenty-Two 테마는 엘리멘터나 Divi 등의 기능에 비해 아직은 초보적인 단계입니다.

GeneratePress 프리미엄 버전을 이용하는 경우에는 블록(Block) 엘리먼트를 사용하여 페이지마다 다른 헤더/푸터/사이드바 등을 표시할 수 있습니다.

워드프레스에서 페이지마다 다른 헤더/푸터 사용하기

워드프레스에서 헤더 파일을 호출하는 코드는 <?php get_header( $name ); ?>입니다. 여기서 $name부분이 없으면 그냥 header.php 파일을 불러오고, $name 부분이 'home'이면 header-home.php를 불러옵니다. 마찬가지로 워드프레스에서 푸터 파일을 호출하는 코드는 <?php get_footer( $name ); ?>입니다. header.php와 마찬가지 규칙이 적용됩니다. 그러므로 원하는 페이지마다 다른 헤더와 푸터를 로드하려면 get_header( $name ) 부분과 get_footer( $name ) 부분의 변수를 바꾸어주고 해당 페이지에 맞게 header 파일과 footer 파일을 수정해주면 됩니다. (동일한 원리가 사이드바를 호출하는 함수인 get_sidebar( $name )에도 적용됩니다.)

페이지마다 별도의 템플릿을 만드는 대신 index.php 파일 내에서 get_header() 부분과 get_footer() 부분을 페이지별로 호출하려면, 다음과 비슷한 조건문을 사용하면 됩니다.

<?php
if ( is_front_page() ) {
get_header( 'home' ); // 전면 페이지에서는 header-home.php 호출
} elseif ( is_page( 'About' ) ) {
get_header( 'about' ); // 글 제목(post-title)이 About인 페이지의 경우 header-about.php 호출
} elseif ( is_page( 42 ) ) {
get_header( 'about' ); // ID가 42인 페이지의 경우 header-about.php 호출
} else {
get_header();  // 이외의 경우 header.php 호출
}
?>

is_page()뿐만 아니라 is_category()도 함께 사용이 가능합니다. get_footer()/get_sidebar()에도 동일한 방식으로 사용 가능합니다.

참고


20 개 댓글

Leave a Comment

  1. 안녕하세요. 홈 페이지는 원페이지 형식으로 헤더메뉴 클릭시 해당 섹션으로 스크롤링 되게하고 홈 외에 페이지는 다른 템플릿의 헤더로 노출시켜 구동하고싶습니다. 테마 빌더에서 헤더 템플릿은 만들어봤습니다만 노출이 양자택일로 하나의 헤더만 노출되더라구요.. PHP 수정할때 A헤더와 B헤더의 페이지 지정 명령을 어떻게 해야하나요??(EX: 홈은 A헤더 외 페이지는 B헤더로 노출희망)

    응답
  2. 안녕하세요 페이지마다 헤더와 푸터를 변경하고자 하는데,
    문제는 차일드 테마에서 index.php 수정을 해도 변경이 안되는 것 같습니다. 사용중인 테마는 아바다테마 인데.. index.php에서 수정을 하는게 맞는거죠?

    응답
  3. 문의드립니다. 페이지마다 로고만 다르게 출력하고 싶습니다. 아바타 테마를 사용중입니다. 방법이 있을까요? 플러그인을 추천해주셔도 감사드리겠습니다.

    응답
  4. 카테고리별로 다른 헤더를 지정하려면 다음과 같은 코드를 생각해볼 수 있습니다.

    if(is_category('카테고리a-슬러그')){
    get_header('a');
    }elseif(is_category('카테고리b-슬러그')){
    get_header('b');
    }

    응답