사용자 정의 게시물 유형 표시 – 템플릿 및 쿼리
게시 됨: 2016-09-26이것은 사용자 정의 포스트 유형(CPT)에 대한 시리즈의 세 번째이자 마지막 기사입니다. 처음 두 가지에서 논의한 주제는 다음과 같습니다.
- 사용자 정의 게시물 유형(생성 방법)
- 사용자 정의 분류
첫 번째 기사와 두 번째 기사에서는 testimonials 사용자 정의 게시물 유형과 testimonial_service 사용자 정의 분류를 등록했습니다. 이제 사이트에 평가를 표시해야 합니다. 따라서 우리는 평가를 위한 템플릿을 만드는 방법, 평가를 쿼리하는 방법, 사이트의 아무 곳에나 표시하는 방법을 살펴볼 것입니다.
기본 사용자 정의 게시물 유형 템플릿
has_archive
매개변수를 true로 설정하여 CPT를 만들었습니다. 그러면 아카이브 페이지 에 모든 평가가 표시됩니다.
WordPress는 템플릿 계층을 사용하여 다양한 유형의 콘텐츠를 표시합니다. 사용자 정의 게시물 유형의 경우 다음을 찾습니다.
아카이브-{post_type}.php
단일 {post_type}.php
이러한 템플릿이 테마에 정의되어 있지 않으면 일반 템플릿을 찾습니다.
아카이브.php
단일.php
이러한 템플릿도 정의되지 않은 경우 기본적으로 index.php 템플릿이 사용됩니다.
우리의 경우 Shaka 테마에는 single.php 가 있지만 archive.php 템플릿은 없습니다. 이것은 기본적으로 단일 평가 페이지에 single.php 템플릿을 사용한다는 것을 의미합니다. 또한 index.php 템플릿을 사용하여 평가 아카이브 페이지의 모든 평가를 표시합니다.
평가는 이 페이지에 있는 평가 아카이브 페이지 에 표시됩니다.
http://your-domain-goes-here.com/ ?post_type=testimonials
예쁜 퍼머링크가 활성화되어 있으면 다음 URL을 사용하여 페이지에 액세스할 수도 있습니다.
http://your-domain-goes-here.com/ testimonials
(참고: 예쁜 퍼머링크가 작동하지 않으면 wp-admin -> 설정 -> 퍼머링크로 이동하여 원하는 방식으로 설정하고 설정을 저장하세요.)
먼저 새로 등록된 CPT Testimonials 에 몇 가지 평가를 작성해야 표시할 데이터가 있습니다. 저는 3개의 평가를 추가했으며 이것이 우리의 Shaka 테마에서 평가 아카이브 페이지의 기본 레이아웃이 보이는 방식입니다.
보시다시피 레이아웃은 괜찮지만 표시되는 일부 데이터(예: 작성자별) 및 날짜는 필요하지 않습니다. 또한 testimonial_service 사용자 정의 분류가 표시되지 않으므로 사용자 정의 템플릿에 추가합니다.
CPT용 맞춤 템플릿 만들기
이전 섹션에서 언급했듯이 두 개의 템플릿을 만들어야 합니다. archive-testimonials.php 및 single-testimonials.php . 이 예제에서는 archive-testimonials.php 템플릿만 생성합니다.
이 파일을 자식 테마로 만들어야 하지만 간단하게 하기 위해 Shaka 테마에 archive-testimonials.php 파일을 직접 추가하겠습니다. 시작점으로 사용할 index.php 파일을 복사하고 이름을 archive-testimonials.php 로 바꾸겠습니다.
작성자별", 날짜 코드 및 사이드바를 제거했습니다. 추천 이미지와 추천 서비스 맞춤 분류를 추가했습니다. 나는 특정 WP 용어 목록을 표시하는 the_terms
WP 함수를 사용했습니다. 이 경우에는 사용자 정의 분류법입니다.

나는 그것이 미학적으로 멋져 보이지 않는다는 것을 알고 있지만 그것이 요점은 아닙니다. 우리는 다른 데이터로 평가 아카이브 페이지의 다른 구조/레이아웃을 만들고 싶었고 몇 분 안에 달성했습니다.
단일 평가 페이지에 대해서도 동일한 작업을 수행할 수 있습니다. single.php 파일을 복사하고 이름을 single-testimonials.php 로 변경하고 거기에서 코드를 변경합니다.
코드 예제는 테마마다 다르고 템플릿을 코딩하려면 HTML 및 PHP에 대한 몇 가지 기본 지식이 필요하기 때문에 여기에 코드를 표시하지 않았습니다. 그러나 기존 템플릿을 수정하는 것이 항상 더 쉽기 때문에 index.php를 시작점으로 사용했습니다.
사용자 정의 게시물 유형 쿼리
사이트에 사용자 지정 게시물 유형을 표시하는 또 다른 방법은 WP_Query 클래스를 사용하여 사용자 지정 게시물 유형을 가져오는 것입니다(루프 스루 및 표시).
캐러셀에 모든 평가를 표시하는 위젯을 빌드한다고 가정해 보겠습니다. 또는 단일 평가 페이지에 관련 평가(동일한 평가 서비스 분류)를 표시하고 싶습니다. WP_Query
클래스를 사용하여 관련 평가를 검색합니다.
이 예에서 우리는 "다이빙" 평가 서비스 사용자 정의 분류에 있는 모든 평가를 가져와 목록으로 출력합니다.
<?php $args = array( 'post_type' => 'testimonials', 'post_status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'testimonial_service', 'field' => 'slug', 'terms' => 'diving' ) ) ); $testimonials = new WP_Query( $args ); if( $testimonials->have_posts() ) : ?> <ul> <?php while( $testimonials->have_posts() ) : $testimonials->the_post(); ?> <li><?php printf( '%1$s - %2$s', get_the_title(), get_the_content() ); ?></li> <?php endwhile; wp_reset_postdata(); ?> </ul> <?php else : esc_html_e( 'No testimonials in the diving taxonomy!', 'text-domain' ); endif; ?>
위의 코드에서 볼 수 있듯이 먼저 인수 설정 배열을 준비하고 나중에 WP_Query
초기화에 사용합니다. 이 배열에서 다음을 검색하도록 정의합니다.
- '평가' CPT,
- 출판된 후기만 받고,
- 다이빙 사용자 지정 분류 `testimonial_service`에 있는 평가만 가져옵니다.
new WP_Query
가 호출되면 관련 평가가 검색되고 우리는 이를 반복할 수 있습니다. 루프에서 우리는 단순히 제목(저자 이름으로 사용함)과 평가 내용을 간단한 목록으로 출력합니다. 또한 WP_Query 루프를 사용할 때 원래 루프로 재설정하려면 항상 wp_reset_postdata
함수를 사용해야 합니다. 이렇게 하면 사용자 지정 쿼리를 마친 후 모든 것이 제대로 작동합니다.
이것이 Custom Post Type의 기본이었으며 이제 어떻게 작동하는지 이해하시기 바랍니다. 모든 주제와 마찬가지로 항상 더 자세히 설명해야 합니다. 이 예제에서 사용한 모든 함수와 클래스에 대한 공식 WP 문서를 살펴보는 것이 좋습니다. 질문이 있는 경우 아래 댓글 섹션에 알려주십시오.