Custom Post Type – Custom Taxonomy Sub Category Template 관련 질문

안녕하세요. 워드프레스 테마 직접 만드는 개발자되기 책 보고 테마 개발 도중 질문이 있어서 남깁니다.

본업이 IT쪽에 속해있기는 하지만, 전문 개발자는 아니라서 애를 먹고 있는 상황입니다.

 

현재까지 진행한 내용

  • 먼저, function.php 파일에서 Custom Post type과 이 포스트 타입에만 적용되는 Custom Taxonomy를 생성하였습니다.
  • function.php 파일에서 permalink 함수를 지정하여 url 구조를 다음과 같이 지정하였습니다.
    • mydomain.com/Post-type-name/category-name/sub-category-name/post-name

 

앞으로 진행하고 싶은 내용 (질문)

이제 Custom Taxonomy를 기준으로 아카이브 페이지를 만들고 있는데요.

top-category의 경우 taxonomy-{{texonomy-name}}.php 파일을 만드니까 바로 적용이 되는데, sub-category의 경우는 slug나 term별로 만드는 것이 아니라 공통 템플릿 파일을 만들어서 레이아웃을 지정 후, 서브 카테고리 이름을 기준으로 타이틀명, 카테고리 소개 내용, 백그라운드 이미지 등을 호출하고 제어하려고 계획 중입니다.

 

  1. custom taxonomy: sub-category Template을 만들려면 어떻게 해야할까요?
  2. custom taxonomy: sub-category Template에서 sub-category 이름을 기준으로 타이틀, 백그라운드 이미지 등을 제어하려고 하는데요. 매번 코드를 수정하는 것이 아니라 테마 기능으로 추가하여 콘텐츠 관리자가 쉽게 편집할 수 있게 하려면 어떤 방향으로 개발해야 할까요?

 

 

목록보기

해당 글에 1개의 댓글이 있습니다.

  1. 피터 댓글:

    1단계의 카테고리는 직접 코드를 작성해서 템플릿을 만들고, 2단계 부터의 템플릿은 관리자 화면에서 설정에 의해 변경되는 템플릿을 구현하시려는 것으로 이해 됩니다.

    taxonomy의 템플릿은 사실 1단계, 2단계 등의 구분이 없습니다.
    이해하고 계신대로 taxonomy-{taxonomy-name}.php가 있다면, 그 템플릿이 사용되고 없으면 taxonomy-{taxonomy}.php > taxonomy.php … 등의 순으로 다음 템플릿을 찾게 될 것입니다.(저희 책 표지 장에 있는 템플릿 구조도 참조)

    그러면, Chan님께서 원하시는 것을 구현 하시려면 1단계의 taxonomy를 위해서는 각각의 템플릿 파일을 생성해주고,
    나머지(2단계)를 위해서는 taxonomy-{taxonomy}.php파일 하나만 구현 후 설정 값에 따라 변경되도록 하시면 됩니다.
    관리자 > taxonomy 편집 화면에 추가 내용이 나오도록 아래 코드 참조하시어 term meta 데이터에 저장 후
    템플릿에서 그 값을 얻어와 사용하면 되겠네요.
    예제 코드에서 taxonomy는 genre 라고 가정합니다.

    // 추가정보 필드 추가
    function it_add_genre_meta_box($tag) {
      $extra = get_term_meta($tag->term_id, 'extra_info', true);
      ?>
      <tr class="form-field term-genre">
        <th scope="row">
          <label for="extra-info">추가정보</label>
        </th>
        <td>
          <input type="text" name="extra_info" id="extra-info" value="<?php echo $extra; ?>"/> 
        </td>
      </tr>
      <?php
    }
    add_action('genre_edit_form_fields', 'it_add_genre_meta_box', 10, 1);

    // 메타데이터 저장
    function it_save_genre_extra_info($term_id) {
      update_term_meta($term_id, 'extra_info', $_POST['extra_info']);
    }
    add_action('edited_genre', 'it_save_genre_extra_info', 10, 1);

    워드프레스 term의 저장/수정 등에 관해서는 아래의 소스파일을 참조하시면 자세히 알 수 있습니다.
    /wp-admin/edit-tags.php
    /wp-admin/edit-tag-form.php

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다