워드프레스 get_template_part() 함수

워드프레스 테마의 index.php 파일 등을 보면 다음과 같은 코드가 사용되는 것을 흔히 볼 수 있습니다.

<?php get_template_part( 'content', get_post_format() ); ?>

위의 코드의 의미를 정확하게 이해하기 위해 WordPress Codex 페이지에서 get_template_part를 살펴보면, get template part를 다음과 같이 정의하고 있습니다.

템플릿 파트(header, sidebar, footer 이외의 부분)를 템플릿에 로드한다. 테마에서 코드 섹션을 쉽게 재사용할 수 있도록 하며 차일드 테마가 부모 테마의 섹션을 교체하는 손쉬운 방법이다.

쉽게 말해서 코드의 특정 부분을 재사용하도록 get_template_part를 사용하여 로드할 수 있다는 의미입니다. 그리고 부모 테마보다는 먼저 차일드 테마(자식 테마)의 파일을 먼저 찾기 때문에 코드를 위와 같이 처리하면 보다 수월하게 자식 테마에서 특정 코드 부분을 먼저 로드할 수 있어 "차일드 테마가 부모 테마의 섹션을 교체하는 손쉬운 방법"이라고 표현한 것 같습니다. 사용법은 다음과 같습니다.

<?php get_template_part( $slug ); ?>
<?php get_template_part( $slug, $name ); ?>

예를 들어,

<?php get_template_part( 'loop', 'index' ); ?>

이 경우 다음 순서로 파일을 로드합니다.

  1. wp-content/themes/자식 테마 폴더/loop-index.php
  2. wp-content/themes/부모 테마 폴더/loop-index.php
  3. wp-content/themes/자식 테마 폴더/loop.php
  4. wp-content/themes/부모 테마 폴더/loop.php

이제 맨 처음에 제시했던 코드로 돌아가볼까요? 대충 눈치 챘으리라 생각됩니다. <?php get_template_part( 'content', get_post_format() ); ?> 함수는 기본적으로 content.php 파일을 로드합니다. 하지만 보다 정확히 표현하면:

gallery 글 유형의 경우 content-gallery.php를, quote 글 유형의 경우 content-quote.php를 include하려고 시도합니다. 이런 특정 파일이 존재하지 않으면 content.php 파일을 로드합니다. (여기 참고.) 사용자 글 유형에 대해서는 여기를 참고해보시기 바랍니다.


댓글 남기기

* 이메일 주소는 공개되지 않습니다.