워드프레스 테마 개발 – 헤더 푸터 만들기

보통 사이트를 만들면 헤더와 푸터는 어떤 페이지를 가든 비슷한 경우가 많다. 그 말은 헤더와 푸터는 사이트 전반적으로 사용되는 레이아웃 요소라는 것이다. 이 글에서는 헤더와 푸터를 만들고 어떻게 적용하는지 작성한다.

헤더와 푸터에는 어떤 정보들을 가져오는 것이 좋을까?

일단은 관리자 페이지에서 설정한 사이트 정보들이 있을 것이고, 당연히 사이트마다 다르겠지만, 공통적으로 가져오는 데이터들이 있을 것이다.

헤더에 포함하면 좋은 정보

사이트 탐색 및 사용자 편의성을 위한 요소 중심

  • 로고 및 사이트 제목 – the_custom_logo(), bloginfo(‘name’)
  • 활용 메인 내비게이션 메뉴 – wp_nav_menu()를 활용해 주요 페이지 링크 제공
  • 검색창 – get_search_form()을 활용해 사이트 검색 기능 추가
  • 회원 관련 정보 – 로그인/로그아웃 버튼, 마이페이지 링크 등
  • 알림 및 배너 – 중요 공지, 프로모션 배너 추가
  • 언어 선택 옵션 – 다국어 지원을 위한 WPML 또는 Polylang 위젯

푸터에 포함하면 좋은 정보

  • 저작권 정보 – © 연도를 포함한 사이트 저작권 문구
  • 푸터 메뉴 – wp_nav_menu()를 활용해 이용약관, 개인정보처리방침, 고객센터 등 연결
  • 소셜 미디어 링크 – Facebook, Twitter, Instagram 등의 아이콘 및 링크
  • 연락처 정보 – 이메일, 전화번호, 회사 주소 등
  • 푸터 위젯 영역 – 최근 글, 인기 글, 뉴스레터 구독 폼 등 추가 가능

헤더, 푸터 파일 만들기

헤더와 푸터를 만드는 것은 테마 파일에 단순히 header.php, footer.php파일을 만들면 되는 것이다.

헤더 예시 코드

<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
    <meta charset="<?php bloginfo('charset'); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title><?php bloginfo('name'); ?></title>
    <?php wp_head(); ?> 
</head>
<body <?php body_class(); ?>>

<header class="site-header">
    <div class="container">
        <div class="logo">
            <a href="<?php echo home_url(); ?>">
                <?php 
                if (has_custom_logo()) {
                    the_custom_logo(); // 사용자 지정 로고 표시
                } else {
                    bloginfo('name'); // 로고가 없을 경우 사이트 제목 표시
                }
                ?>
            </a>
        </div>
        
        <nav class="main-navigation">
            <?php 
            wp_nav_menu(array(
                'theme_location' => 'primary',
                'menu_class'     => 'nav-menu'
            )); 
            ?>
        </nav>
    </div>
</header>

푸터 예시 코드

<footer class="site-footer">
    <div class="container">
        <p>&copy; <?php echo date('Y'); ?> <?php bloginfo('name'); ?>. All rights reserved.</p>
        
        <nav class="footer-navigation">
            <?php 
            wp_nav_menu(array(
                'theme_location' => 'footer',
                'menu_class'     => 'footer-menu'
            )); 
            ?>
        </nav>
        
        <div class="social-links">
            <a href="https://facebook.com" target="_blank">Facebook</a>
            <a href="https://twitter.com" target="_blank">Twitter</a>
        </div>
    </div>
</footer>

<?php wp_footer(); ?>
</body>
</html>

헤더, 푸터 파일 적용하기

만든 헤더와 푸터를 테마의 각 페이지(index.php, single.php, page.php 등)에서 아래와 같이 불러올 수 있다.

<?php get_header(); ?>

<main>
    <h1>여기에 콘텐츠 작성</h1>
</main>

<?php get_footer(); ?>

워드프레스에서 제공하는 정보들 가져오기 및 유용한 링크

사이트 정보 관련

설명함수명예시
사이트 제목 가져오기bloginfo(‘name’)<?php bloginfo(‘name’); ?>
사이트 설명 가져오기bloginfo(‘description’)<?php bloginfo(‘description’); ?>
사이트 기본 URL 가져오기bloginfo(‘url’)<?php bloginfo(‘url’); ?>
홈 URL 가져오기get_home_url()<?php bloginfo(‘description’); ?>
현재 테마의 디렉토리 URLget_template_directory_uri()<?php echo get_template_directory_uri(); ?>
현재 테마의 스타일시트 디렉토리get_stylesheet_directory_uri()<?php get_stylesheet_directory_uri(); ?>

테마 관련

설명함수명예시
테마 및 플러그인이 추가한 메타 정보, 스타일, 스크립트 로드wp_head()<head> 내부에 삽입
푸터에서 추가적인 스크립트 및 기능 로드wp_footer()</body> 바로 위에 삽입
현재 페이지가 메인 페이지인지 확인is_front_page()if(is_front_page()) {…}
블로그 메인 페이지 여부 확인is_home()if(is_home()) {…}
현재 포스트 또는 페이지의 ID 가져오기get_the_ID()<?php echo get_the_ID(); ?>

내비게이션 및 메뉴

설명함수명예시
등록된 메뉴 표시wp_nav_menu()<?php wp_nav_menu(array(‘theme_location’ => ‘primary’)); ?>
특정 메뉴가 등록되었는지 확인has_nav_menu(‘primary’)if(has_nav_menu(‘primary’)) {…}

사용자 로그인 관련

설명함수명예시
현재 사용자가 로그인 했는지 확인is_user_logged_in()if(is_user_logged_in()) {…}
로그인 페이지 URL 가져오기wp_login_url()<?php echo wp_login_url(); ?>
로그아웃 URL 가져오기wp_logout_url()<?php echo wp_logout_url(); ?>
회원가입 URL 가져오기wp_register_url()<?php echo wp_registration_url(); ?>

기타 유용한 함수

설명함수명예시
현재 연도 출력date(‘Y’)&copy <?php echo date(‘Y’); ?>
기본 검색 폼 표시get_search_form()<?php get_search_form(); ?>
푸터 위젯 영역 표시dynamic_sidebar(‘footer-1’)<?php dynamic_sidebar(‘footer-1’); ?>

워드프레스 테마 개발 함수 목록: https://developer.wordpress.org/reference/functions/

검색 폼 커스터마이징(내용 작성중…)

Leave a Comment