본문 바로가기
지속가능티끌/웹,워드프레스

워드프레스 사용자 정의 포스트(Custom Post),템플릿,카테고리,태그 직접 만들기.

by 리치굿맨 2014. 10. 11.

 

  개요 - 사용자 정의 포스트 & 템플릿 & 택소노미 
   
  본 글에서는 워드프레스에 사용자 정의 포스트와 사용자 정의 포스트 전용 템플릿, 사용자 정의 포스트의 전용 택소노미(카테고리와 태그)를 플러그인 사용하지 않고 직접 만드는 방법을 설명한다. 


본 글에서 다루는 내용은 워드프레스 설치하면 기본 내장된 포스트와 페이지의 개념은 이해된 상태를 전제로 한다.
워드프레스 기본 내장 포스트와 페이지 이해 -> http://igotit.tistory.com/62


사용자 정의 포스트를 만들게 되면 포스트를 표현하는 템플릿도 같이 만들 일이 생긴다.  본 글에서는 사용자 정의 포스트와 이를 웹페이지에 표현하는 사용자 정의 템플릿 만드는 방법도 다룬다. 마지막으로 카테고리와 태그 만드는 방법을 설명한다.


용어.
사용자 정의 포스트 , Custom Post.
사용자 정의 포스트 템플릿, Custom Post Type Template.
택소노미, Taxonomy : 카테고리와 태그를 의미함.


차례.
1. Custom Post 무엇이며, 왜 필요한가?
2. Custom Post 만드는 법. - 사용중인 테마의 functon.php 에 커스텀 포스트 생성하는 코드를 추가한다. 
3. Custom Post 전용 Type Template 만드는 법. - 커스텀 포스트 전용 템플릿 php파일을 추가한다.
4. Custom Post 전용 Taxonomy(카테고리와 태그) 만드는 법 - 사용중인 테마의 functions.php에 코드 추가.



   

 

 

  1. Custom Post 무엇이며, 왜 필요한가?
   
  워드프레스에서 기본 제공되는 포스트만으로는 한계가 있기 때문에 Custom Post Type 을 직접 만들어서 사용한다.


http://igotit.tistory.com/62 에서 한계의 예로 '제품'이 있었다. 제품뿐만이 아니라 기본제공 포스트로 표현될 수 없는 것이 훨씬 많다. 


Custom Post 를 만든 경우 이를 표현하는 템플릿도 별도로 만들 필요가 생긴다. Custom Post 에서 사용할 템플릿 php파일도 직접 만들어 추가해야한다.


Custom Post 에서 카테고리와 태그도 표현하고 싶다면 이 역시 임의로 만들 수 있다.

   

 

 

  2. Custom Post 만들기
   
  커스텀 포스트의 예로 제품 정보를 전적으로 핸들링하기 위한 Custom Post 를 만들어본다.


Custom Post 를 만들기 위해 호출하는 함수 :  <?php register_post_type$post_type$args ); ?>


함수 register_post_type()  상세설명 -> http://codex.wordpress.org/Function_Reference/register_post_type




커스텀포스트 만들기 코드 functions.php 에 추가. -  가장 간단한 인자전달.


사용 중인 테마(본 예에서의 테마는 twentyfourteen)의 functions.php 의 하단에 아래 처럼 붉은 박스 부분처럼 코드를 추가한다. 이 코드가 커스텀 포스트 생성기이다. 








코드설명 :
함수 register_post_type$post_type$args ); 의 첫번째 인자 post_type에는 igotit_product 를 기입했다. 커스텀 포스트의 식별자 즉 고유아이디에 해당한다. 최대 20글자 이내에서 기록하면 된다. 브라우저에서 Custom Post 를 볼때 주소창에도 여기에 기입한 글자가 보이게된다.  


두번째 인자 $args 로는 배열을 전달하는데 이 부분에 기록할 사항이 좀 많다. 그러나 전부 기록하지 않아도 된다. 필요에 따라 해당 변수들을 선택적으로 값을 할당하면된다. 시험용 코드1에서는 가장 간단하게 변수에 값을 지정해본 것이다.  


name : Products 는  커스텀포스트 이름이다. 워드프레스 관리자 메뉴에 보이는 이름이 된다.
singular_name : Product 로 했다.  포스트 1개의 이름을 의미한다.
'publicly_queryable' => true, :  쿼리가능하게 한것. true로 해줘야 함. 이 값을 false로 하면 해당 글 없다는 404에러. 뜸.
'show_in_nav_menus' => true, : 이 포스트를 메뉴에 보이게 하겠다는 설정.'show_ui' => true, : 이 포스트를 워드프레스 관리자 메뉴에 보이게 하라는 설정.
'supports' => array('title', 'editor') : 본 커스텀 포스트는 타이틀과 내용만 기록하도록 설정한 것. 본 포스트에서는 저자, 썸네일, 요약, 사용자정의필드, 코멘트 등등을 사용하지 않는 설정임.


코드 추가후 워드프레스 관리자에서 보이는 모습.


functions.php 에 위 코드가 추가된 상태에서,


워드프레스 관리자를 열어보면(아래그림), 왼쪽메뉴에 우리가 추가한 커스텀 포스트 "Products" 가 들어와 있음을 알 수 있다.
아래 그림은 새글쓰기를 창을 보여주고 있는데, 우리가 제목과 내용만 기록하게 설정해뒀기 때문에 붉은색 박스처럼 제목과 내용은 활성화 되어있지만, 파란색 박스부분을 보면 아무것도 없다. 워드프레스 기본 내장된 포스트에서는 푸른색 박스 부분에 즉, 썸네일, 카테고리, 태그, 사용자 정의 필드등. 이 부분을 사용하려면 앞의 코드에서 'supports' => array('title', 'editor', 'xxx', 'xxx') 이런식으로 인자들을 기록하면 된다.








한편, 우리가 정의한 포스트는 메뉴에도 배치가능하게 설정 ('show_in_nav_menus' => true ) 했기 때문에 외모-> 메뉴에 가보면 아래 그림 처럼 Products 를 메뉴에 추가가능하게 준비되어 있다. 메뉴에 커스텀 포스트를 추가한 모습을 보이고 있다.








브라우저에서 보기.


위의 상태에서 브라우저에 보기를 하자. 우리의 커스텀포스트를 메뉴에 배치했기 때문에 아래 그림에서  메뉴에  추가된 아이템을 클릭하면 해당 글을 볼 수 있다. 




위 화면에서 보이는 것은 워드프레스 기본 내장된 포스트에서 사용하는 템플릿인 single.php 로 보고있는 것이다. 워드프레스에서 커스텀 포스트를 보이게 하는 경우  single-{post_type}.php  로 화면에 보이는 처리를 시도하게 된다. 본 예에서는 single-igotit_product.php 파일을 찾게된다. 만일 이 파일이 없다면 single.php 파일을 이용하여 커스텀포스트를 화면에 보이게 한다. 지금 위에서 보이는 화면은 single.php 로 보이게 된것.


아래 3.편에서는 커스텀 포스트 전용 템플릿 만들기 진행한다.
 

- 2.커스텀포스트 functions.php에 코드 직접추가로 만들기

 

 

  

  3. 커스텀 포스트 템플릿 만들기. (Custom Post Type Template)
   
 

우리가 커스텀 포스트를 만든 경우 화면에 보이는 모습도 다르게 보여야 할 경우가 발생하므로 커스텀 포스트 전용의 템플릿을 직접 만들줄 알아야 한다.


참고할 기본정보 : 워드프레스에서의 모든 템플릿 http://codex.wordpress.org/Template_Hierarchy 
위 링크에서는 워드프레스에서의 템플릿에 대한 구조및 설명을 하고 있다. 템플릿이란 우리가 작성한 포스트나 페이지를 화면에 보일때 사용되는 틀이며, 이 틀은 php 코드로 구현되어있다. home.php, index.php, single.php 등등이 있고, 이들 템플릿들을 화면에 보일때 워드프레스의 규칙을 설명하고 있다.
본 글에서 다루는 커스텀 포스트 템플릿 관련하여 이해 할 사항은 커스텀 포스트를 화면에 보일 때 워드프레스 내부 규칙은 single-{post_type}.php 를 이용하려고 한다. 만일 이 파일이 없다면 워드프레스 기본 내장 포스트용도로 사용하는 single.php 를 이용하여 화면에 보이는 처리를 하게된다는 점이다.




커스텀 포스트 전용 템플릿 파일명 규칙.


1. 커스텀 포스트 타입의 글 을 보이는 커스텀 템플릿 파일명 :  single-{post_type}.php
2. 커스텀 포스트의 archive (포스트리스트 담당하는것) 용 템플링 파일명 : archive-{post_type}.php


여기서,  {post_type}   에는 커스텀포스트의 post_type 을 기록하면 되는데, 본 코드 예에서는 igotit_product 이다.
우리가 앞에서 가장 간단하게 만든 커스텀 포스트는 archives 가 없는 것으로 만들어졌기에 archive용 템플릿 파일은 만들 필요없다.
포스트 1개를 보이는 템플릿 파일명을 single_igotit_product.php 로 만들어서 테마 폴더에 넣어두면된다.


템플릿 single_igotit_product,php 만들기.


지금 시험할 템플릿 파일은 기존테마에 있는 포스트를 표현하는 single.php 파일을 복사하여 파일 이름을 single_igotit_product.php 로 변경하여 시험한다. 그리고 시험용으로 single_igotit_product.php 코드내용  아래 붉은 박스 처럼 이 템플릿 파일이 우리가 만든 커스텀 포스트 전용 템플릿임을 표시되게 해본다. 커스텀포스트용 템플릿이 이용되어 웹에 보이게 된 것인지를 확인하기 위한 용도다.
$post->ID 는 글의 고유아이디 번호를 출력하도록 한 것이다.






웹에서 보기.


커스텀 포스트 템플릿이 적용되는지 웹에서 확인하자. 아래 그림에서 보면 echo 로 기록한 내용이 보이고 있다. 우리가 만든 포스트 전용 템플릿 파일이 정상 적용됨을 확인하였다. 또한, 본 글의 고유 아이디 번호도 표현되게 하였다.

  - 3.커스텀포스트 전용 템플릿 만들기. 템플릿 파일 직접 생성하는 방식.

 

 

 

 

  4.Custom Post  전용 카테고리, 태그 만들기.
   
  우리가 현재 만들어둔 Custom Post 에는 카테고리와 태그가 없다. 아래그림 왼쪽 붉은 박스 속을 보면 Products 와 새 글쓰기만 있다. 




커스텀 포스트 전용의 카데고리와 태그 만들기도 간단하게 달성된다. 카데고리만 추가할 수 도 있고, 태그만 추가할 수도 있다.


functions.php 에 추가했었던, 커스텀 포스트 생성부에, taxonimies 사용하는 것으로 설정하기


본 글의 예에서 만들어진 커스텀 포스트는 가장 단순하게 만들려고 taxonomy 사용하지 않는 것으로 설정했었다. 이제 우리의 포스트를 카데고리와 태그 사용가능하게 하기위하여 taxnomies = true 설정한다. 아래 붉은색 부분.


add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'igotit_product',
    array(
      'labels' => array(
        'name' => __( 'Products' ),
        'singular_name' => __( 'Product' )
      ),
  'publicly_queryable' => true,
  'show_in_nav_menus' => true,
  'show_ui' => true,
  'taxonomies' => true,
  'supports' => array('title', 'editor'),
    )
  );
}




function.php 에 카테고리, 태그생성 코드 추가.


택소노미 추가 목적으로 사용되는 함수 :
<?php register_taxonomy$taxonomy$object_type$args ); ?> 함수 레퍼런스 -> http://codex.wordpress.org/Function_Reference/register_taxonomy
함수의 인자로 3개가 있는데,
$taxonomy : 본 taxnomy 의 아이디 역할을 한다. 소문자만 가능하고 32 글자 이내.
$object_type : 본 taxnomy의 대상 개체 타입 기록한다. 커스텀 포스트인경우 custom post 정의시 사용된 post_type을 기록한다. 본 예에서 igotit_product 를 기록한다.


functions.php 에 아래 코드를 추가한다. 앞의 것은 카테고리 추가이고, 뒤의 것은 태그추가 기능이다.






워드프레스 관리자에서 카테고리, 태그 추가된 모습.


위의 코드를 추가 하고 워드프레스 관리자에서 보면 커스텀 포스트 Products에 카테고리와 태그가 추가된것을 볼 수 있다. 사용법은 워드프레스 기본 포스트의 카테고리와 태그와 동일하다.







  - 4.커스텀포스트 전용 카테고리, 태그 만들기.

 

 



본 글이 포함된 통합 정리 글


WordPress 활용정보 정리 : http://igotit.tistory.com/23

 

 

 

 

75.

댓글1

  • Favicon of https://0-soo.tistory.com BlogIcon 0수 2017.05.11 14:40 신고

    안녕하세요! 저는 회사의 채용공고 페이지를 만들고 있는데요, 커스텀포스트와 택소노미 카테고리까지 만들어서 구현까지 잘 했습니다. "recruitment" 라는 post type 을 만들고, "recruitment_category" 라는 카테고리도 만들어서 잘 출력됩니다. 카테고리안에는 "마케팅실, 경영사업부.." 등의 부서들 카테고리가 있어요. achive-recruitment.php에 좌측에 "카테고리(부서명)"목록이 있고, 우측에 선택한 "카테고리(부서)"의 글목록이 보이게 하고 싶습니다. 특정 카테고리(부서)의 글 목록만 나오게 하려면 어떻게 해야하나요? 그리고 해당 "카테고리 이름"을 출력하는 코드는 뭔지 알려주실 수 있나요?
    답글


   
현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     선물 인버스 |선물 USDT