Creating WordPress Custom Post Archives

Custom post archives는 워드프레스가 custom content를 표시하기 위해 사용하는 표준 방식이다. coding없이 PHP와 Views plugin을 가지고 이런 archives를  customize하는 방법을 알아볼 것이다.

Introduction to WordPress Custom Post Archives

Custom Post Archives는 custom content를 나열(list)한다. 표준 WordPress archives는 이미 알고 있을 것이다. 좋은 예로는 blog home, author pages 및 search results가 있다. standard archives가 standard content types을 나열하고, custom post archives는 custom content를 나열할 것이다.

custom post archives를 위한 개별 templates을 만들 수 있다. 이 templates은 모든 field를 포함할 수 있다. 예를들어 biographies를 수용하는(hold) “bios”라고 명명된 custom post type을 만들어 보자.

Bios custom post type in Types admin

“bios” custom post archives는 이 biographies의 목록(list)를 표시할 것이다.

Accessing the post type archive URL

custom post type archives를 쉽게 관리하기 위해; 웹사이트의 permalink를 적절하게 설정하기를 추천한다.

  1. WordPress admin에 로그인한다.
  2. Settings -> Permalinks로 이동.
  3. Common Settings 아래의 Post name을 사용한다.

WordPress Permalink structure

  1. ‘Save Changes’를 클릭한다.
  2. 이제 브라우저에서 모든 custom post type을 연다. 다음과 같은 형식의 URL을 볼 수 있을 것이다:

http://mywebsite.com/post-type/post-slug/

예:

http://mywebsite.com/bios/mr-x/

  1. custom post type의 archive URL은 다음과 같은 형식이다:

http://mywebsite.com/post-type/

그러므로 위 예제에서는 다음과 같을 것이다:

http://mywebsite.com/bios/

Customizing custom post archives using template files

default로, WordPress는 ‘archive.php’ template을 사용하여 custom post archives를 표시한다. custom post types의 archives의 content와 모양(appearance)을 customize하기 위해, 비슷한 PHP template 파일을 만들 수 있다.

다음은 자신의 archive template 파일을 만들기 위한 절차이다:

1. Copy archive.php to archive-{posttype_slugname}.php

시간을 절약하기 위해, standard archive.php template을 기본으로 사용할 것이다. custom archive 파일로 이것을 복사하여 편집할 것이다. 이 방법으로, 처음부터 archive 파일을 작성할 필요가 없다.

테마에서 archive.php을 찾아 archive-{posttype_slugname}.php로 이 파일을 복사한다.

archive 파일의 이름은 어떤 post type이 사용되었는지 WordPress에 알려준다. 이 ‘bios’ 예제에서; template 파일은 다음이 될 것이다:

archive-bios.php

Types의 custom post type edit 화면에서 slug value를 볼 수 있을 것이다. 위의 screenshot에서 볼 수 있다.

original archive.php 파일과 같은 directory에 새 archive page를 저장한다.

custom archive template를 저장하면, WordPress는 방문자가 해당 custom post archive page로 이동할 때마다 이 템플릿을 사용할 것이다.

2. Edit your custom archive template and customize it

사용할 수 있는 가장 중요한 함수는 is_post_type_archive()이다. 이것은 쿼리가 post archive page에 대한 것인지를 체크하는 conditional tag이다.

Example – Customize the H1 header for custom post archives

default WordPress theme은 custom archive pages를 위해 text ‘Custom Post Archive’를 출력할 것이다. 분명히 이것을 변경하고 content를 더 잘 설명하는 다른 것을 쓸 것이다.

다른 archives를 위한 H1 tag로 고유한 texts를 출력하기 위해,  conditional logic을 사용할 수 있다. 아래 code는 표시하고 있는 archive의 종류를 체크할 것이다.

Using a customized header H1 tag text for your custom post archive

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<h1 class="page-title">
<?php
if (is_post_type_archive()) {
//display H1 for post type archive
echo "Biography list for this website";                    
} elseif (is_day()) {
echo "Daily archives";
} elseif (is_month()) {
echo "Monthly archives";                       
} elseif (is_year()) {
echo "Yearly archives";
} else {
echo "Blog archives";
}
?>
</h1>

이것이 biographical archive라면, 다음과 같이 표시될 것이다: “Biography list for this website“.

이 예제는 더 고급의 방식으로 확장할 수 있다. 예를들어, loops를 제어하여 and display your archive content를 표시한다.

Example – Adding custom fields to custom post archives

다음으로 custom post archive output에 custom fields를 출력하기를 원할 것이다.

Types은 Types PHP API에서 types_render_field를 호출함으로써, 이것을 쉽게 할 수 있다.

TwentyEleven theme을 사용하는 예제이다.

TwentyEleven uses get_template_part in returning archive content

1
2
3
4
5
6
7
8
9
10
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php
//This will return the content of the CPT archive
get_template_part( 'content', get_post_format());                  
?>
<?php endwhile; ?>

get_template_part ‘content’ argument는 TwentyEleven theme의 content.php를 의미한다. 이 template을 연다.

Code for returning the archive content

1
2
3
4
<div class="entry-content">
<?php the_content( __( 'Continue reading <span class="meta-nav"></span>', 'twentyeleven' ) ); ?>
<?php wp_link_pages( array( 'before' => '<div class="page-link"><span>' . __( 'Pages:', 'twentyeleven' ) . '</span>', 'after' => '</div>' ) ); ?>
</div>

custom field values를 표시하기 위해, 간단하게 위의 기존 코드에 Types render field를 삽입한다. 예를 들어:

Displaying custom fields using Types render field in archives

1
2
3
4
5
6
7
8
9
10
11
<div class="entry-content">
<?php the_content( __( 'Continue reading <span class="meta-nav"></span>', 'twentyeleven' ) ); ?>
            
<?php
//Display the contact number of the invoice
            
echo "Contact number: ".types_render_field("contactnumber", array("output"=>"HTML"));
            
?>
<?php wp_link_pages( array( 'before' => '<div class="page-link"><span>' . __( 'Pages:', 'twentyeleven' ) . '</span>', 'after' => '</div>' ) ); ?>
</div>

위 예제는  invoice content 아래에 contact number custom field를 표시한다. under the . 다음과 같이 보인다:

Custom field display in archives

Types를 사용하여 WordPress menus에 Custom Post Type Archive의 링크를 추가할 수 있다 . 먼저, Custom Post Type  WordPress Menus editing page에서 볼 수 있어야 한다. 감춰져 있다면 Screen Options을 클릭하고, 이름 옆의 체크박스를 체크한다. 이 예제에서는 “Events” Custom Post Type을 사용한다:

Add Custom Post Type to the WP Menu editing page
Add Custom Post Type to the WP Menu editing page

custom Menu에 Custom Post Type의 Archive page의 링크를 추가하려면:

  • left-side menu에서  이것의 name을 클릭하여 선택한다 – 이것이 포함하는 posts의 list를 확장할 것이다.
  • View All tab을 클릭한다
  • 먼저 All items option을 클릭하고 Add to Menu button을 클릭한다
Insert Custom Post Type Archive Page into a WP menu
Insert Custom Post Type Archive Page into a WP menu

이제 menu에서 “All items”이라는 새 항목을 볼 수 있을 것이다. 그리고 오른쪽에 조그맣게 설명을 추가하고 있을 것이다. 예를 들어 “Archive for Events”, 여기에서 “Events”는 Custom Post Type의 이름이다.

Insert Custom Post Type Archive Page into a WP menu
Insert Custom Post Type Archive Page into a WP menu

 


Customizing Custom Post Archives with WordPress Archives

Blog page displaying as a grid

Views plugin으로 custom post archives 전체를 제어할 수 있다. PHP code를 전혀 작성할 필요가 없다. custom fields와  taxonomy를 포함할 수 있다. site의 look and feel을 제어할 수도 있다.

WordPress Archives를 사용하면l:

  1. 어떤 WordPress archive를 customize할 것인지를 선택한다
  2. archive page의 레이아웃을 선택한다
  3. list의 each item에 포함할 fields를 선택한다

custom post archives를 위해, blog page, author archives, date archives 및 even search results와 마찬가지로, WordPress Archives를 사용할 수 있다.

더 자세한 내용은 using WordPress Archives를 참조한다. Discover WP에서 이것을 무료로 배우고 테스트할 수 있다. 또는 buy Toolset으로 점프해서 자신의 사이트를 만들어보자.

댓글 남기기