What is a custom article type?
WordPress의 기본적인 콘텐츠 유형인 ‘포스트(Post)’와 ‘페이지(Page)’는 다양한 콘텐츠 요구사항(제품 소개, 팀원 소개, 프로젝트 사례 등)을 충족시키기에는 부족한 경우가 많습니다. 이러한 문제를 해결하기 위해 도입된 기능이 바로 ‘커스텀 포스트 타입(Custom Post Type, CPT)’입니다. 커스텀 포스트 타입을 사용하면 개발자는 특정 필드, 사용자 정의 분류 체계, 그리고 전용 관리 인터페이스를 갖춘 새로운 콘텐츠 유형을 정의할 수 있으며, 이를 통해 WordPress를 단순한 블로그 시스템에서 기능이 풍부한 콘텐츠 관리 시스템으로 업그레이드할 수 있습니다.
표준 기사를 확장하기 위해 사용자 정의 필드를 사용하는 것과는 달리, CPT(컨텐츠 유형)는 논리적으로 완전히 독립적인 콘텐츠 엔티티를 생성합니다. 예를 들어, “제품” CPT는 자체적인 게시 프로세스, 아카이브 페이지, 상세 정보 페이지를 가질 수 있으며, 그 데이터 구조와 백엔드 관리 인터페이스는 제품의 특성에 맞게 맞춤화될 수 있습니다. 이는 콘텐츠 관리의 명확성과 전문성을 크게 향상시키며, 복잡한 웹사이트 구조를 구현하기 위한 탄탄한 기반을 제공합니다.
How to create a custom article type
WordPress에서 사용자 정의 글 유형을 만드는 방법은 주로 두 가지가 있습니다: 코드를 통해 직접 등록하는 방법과 시각적 플러그인을 사용하는 방법입니다. 최적의 성능과 완전한 제어를 원하는 개발자들에게는 코드를 직접 작성하는 것이 가장 선호되는 방법입니다.
추천 읽기 WordPress 성능 최적화 전략: 기본 설정부터 고급 캐싱 가속까지。
코드를 사용하여 CPT(Custom Product Type)를 등록하는 방법입니다.
가장 핵심적인 방법은 사용하는 것입니다. register_post_type 함수. 개발자는 주제에 맞게 함수를 작성해야 합니다. functions.php 이 함수는 파일이나 독립적인 기능 플러그인 내에서 호출됩니다. 고유 식별자(slug)와 다양한 매개변수를 포함하는 배열을 전달함으로써, 새로운 글 유형의 태그, 공개 여부, 지원되는 기능, 메뉴 아이콘 등 모든 속성을 정의할 수 있습니다.
다음은 “제품” 사용자 정의 기사 유형을 생성하는 고전적인 예시입니다:
function create_product_post_type() {
$labels = array(
'name' => '产品',
'singular_name' => '产品',
'add_new' => '添加新产品',
'add_new_item' => '添加新产品',
'edit_item' => '编辑产品',
'new_item' => '新产品',
'view_item' => '查看产品',
'search_items' => '搜索产品',
'not_found' => '未找到产品',
'not_found_in_trash' => '回收站中没有产品',
'menu_name' => '产品',
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'product' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 5,
'menu_icon' => 'dashicons-cart',
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'custom-fields' ),
);
register_post_type( 'product', $args );
}
add_action( 'init', 'create_product_post_type' ); 플러그인을 사용하여 CPT(Custom Product Type)를 생성합니다.
코드에 익숙하지 않은 사용자들을 위해 “Custom Post Type UI”나 “Toolset Types”와 같은 플러그인들이 제공됩니다. 이러한 플러그인들은 CPT(커스텀 포스트 타입)를 생성하고 관리하기 위한 그래픽 인터페이스를 제공합니다. 사용자는 백엔드에서 필요한 양식을 작성하고 다양한 옵션을 설정하기만 하면, 플러그인이 자동으로 등록 코드를 생성하고 실행해 줍니다. 이 방법은 효율적이고 빠르지만, 추가적인 의존성이나 성능 저하를 초래할 수 있습니다. 플러그인을 선택할 때는 해당 플러그인의 유지보수 상황과 프로젝트의 장기적인 요구사항을 고려해야 합니다.
CPT(Custom Product Template)를 위한 사용자 정의 아카이브 및 단일 페이지 템플릿을 생성합니다.
커스텀 문서 유형을 등록하면, WordPress는 해당 문서 유형의 콘텐츠를 표시하기 위해 테마 내에 있는 해당 템플릿 파일을 사용하려고 합니다. WordPress의 템플릿 계층 구조를 따라서, CPT(커스텀 포스트 타입)의 표시 방식을 정확하게 제어할 수 있는 특정 템플릿을 만들 수 있습니다.
커스텀 아카이브 페이지 템플릿
“제품” CPT의 아카이브 페이지(즉, 모든 제품의 목록 페이지)를 만들려면, 테마 디렉터리 내에 다음과 같은 이름의 파일을 생성해야 합니다: archive-product.php 이 파일은 CPT(커스텀 포스트 타입)를 등록할 때 사용된 슬러그 slug인 “product”를 기반으로 작성된 것입니다. 이 파일 내에서는 표준 WordPress의 루프(Loop) 기능을 사용하여 모든 “제품” 유형의 글을 가져와 표시할 수 있습니다.
추천 읽기 WordPress 웹사이트 성능 최적화 궁극 가이드: 로딩 속도 향상부터 캐싱 실전까지。
\n// archive-product.php 예시 코드
<header class="page-header">
<h1 class="page-title">우리의 제품</h1>
</header>
<div class="products-grid">
<article id="post-<?php the_ID(); ?>" no numeric noise key 1008>
<a href="/ko/</?php the_permalink(); ?>">
<?php the_post_thumbnail( 'medium' ); ?>
<h2></h2>
</a>
<div class="entry-excerpt">
</div>
</article>
</div>
<p>현재 제공할 제품이 없습니다.</p> 커스텀 단일 기사 템플릿
마찬가지로, 개별 “제품”의 상세 페이지 템플릿을 생성하려면 해당 제품에 대한 정보를 준비해야 합니다. single-product.php 이 템플릿은 단일 “제품” 관련 글의 전체 내용을 표시하는 데 사용됩니다. 여기에는 글 편집기에서 추가한 모든 사용자 정의 필드를 출력할 수 있습니다.
단일 제품.php 예시 코드
<article id="post-<?php the_ID(); ?>" no numeric noise key 1005>
<header class="entry-header">
<h1 class="entry-title"></h1>
<div class="product-meta">
<span>가격:</span>
<span>SKU :</span>
</div>
</header>
<div class="entry-content">
</div>
</article> CPT의 고급 응용 및 성능 최적화
웹사이트에 여러 개의 사용자 정의된 기사 유형과 대량의 데이터가 포함되어 있는 경우, 그 사이트의 고급 기능과 성능에 주의를 기울이는 것이 매우 중요해집니다. 여기에는 사용자 정의 쿼리, 데이터 연결, 그리고 최적화 기술이 포함됩니다.
WP_Query를 사용하여 사용자 정의 쿼리를 수행하는 방법입니다.
비록 WordPress의 메인 루프가 CPT(컨텐츠 유형 플러그인)에 대한 쿼리를 자동으로 처리하지만, 사이드바나 특별한 섹션 등에서는 종종 사용자 정의 쿼리를 실행해야 합니다. 이럴 때는 사용자 정의 쿼리를 사용해야 합니다. WP_Query 클래스를 통해, 그리고 그 클래스를 이용하여… post_type 매개변수는 조회할 CPT를 지정합니다.
// 查询最新 3 个“产品”
$product_query = new WP_Query( array(
'post_type' => 'product',
'posts_per_page' => 3,
'orderby' => 'date',
'order' => 'DESC',
) );
if ( $product_query->have_posts() ) {
while ( $product_query->have_posts() ) {
$product_query->the_post();
// 输出产品信息
}
wp_reset_postdata(); // 重置查询数据
} CPT(코드 포인트 테이블)와 사용자 정의 분류 체계를 연결하는 방법
CPT(Commercial Product Taxonomy)의 내용을 더 세밀하게 구성하기 위해서는 사용자 정의 분류 체계를 만들 수 있습니다. 예를 들어, “제품” CPT에 대해 “제품 카테고리”와 “제품 태그”와 같은 분류 항목을 추가할 수 있습니다. 이를 위해서는 특정 도구나 프로세스를 사용해야 합니다. register_taxonomy 함수를 사용하고, 등록할 때에도 이를 적용합니다. object_type 이 매개변수는 해당 제품을 “제품” CPT(카테고리-제품 태그)와 연결합니다. 이를 통해 기사의 분류 및 태그를 사용하는 것과 같이 제품을 다차원적으로 분류할 수 있으며, 각 분류에 맞는 아카이브 페이지를 생성할 수 있습니다.
CPT(Custom Product Template)의 성능을 최적화하기 위한 방법들:
데이터 양이 증가함에 따라 CPT(Custom Product Tags)의 조회가 웹사이트 속도에 영향을 미칠 수 있습니다. 주요 최적화 조치는 다음과 같습니다:
1. Transients API를 적절히 활용하여 쿼리 결과를 캐싱하세요: 자주 변경되지 않는 CPT(인기 상품) 목록의 경우, 해당 쿼리 결과를 캐싱하여 성능을 향상시킬 수 있습니다.
2. 데이터베이스 인덱스를 확인하십시오: CPT에서 자주 사용되는 쿼리 필드(예: …)에 대해 적절한 인덱스가 설정되어 있는지 확인하십시오. post_type, meta_value 등과 같은 데이터에 인덱스를 생성하면 쿼리 성능을 크게 향상시킬 수 있습니다.
3. 페이지 분할 및 지연 로딩 사용: 대량의 데이터가 포함된 아카이브 페이지의 경우 반드시 페이지 분할 기능을 활성화해야 합니다. 이미지와 같은 리소스의 경우에는 지연 로딩(lazy loading) 기술을 고려해 보세요.
4. 반복문 내에서 여러 번 데이터베이스 쿼리를 실행하는 것을 피하세요: 특히 반복문 내부에서 쿼리를 호출하는 것은 반드시 피해야 합니다. get_post_meta 등과 같은 함수를 사용하여 대량의 사용자 정의 필드를 가져올 때는 가능한 한 한 번에 필요한 모든 메타데이터를 가져오는 것이 좋습니다.
요약
WordPress의 사용자 정의 글 유형은 전문적이고 복잡한 웹사이트를 구축하는 데 있어 핵심적인 요소입니다. 이 기능은 기본적인 글과 페이지의 제한을 극복하며, 제품, 사례, 팀원 등과 같은 다양한 유형의 콘텐츠에 대해 독립적이고 기능이 완전한 관리 및 표시 체계를 만들 수 있도록 해줍니다. register_post_type 함수나 플러그인을 생성하는 과정부터, 템플릿의 계층 구조에 따라 맞춤형으로 생성하는 과정까지… archive-{slug}.php 그리고 single-{slug}.php 템플릿을 만든 다음, 실제로 그 템플릿을 사용하는 단계입니다. WP_Query 고급 쿼리를 수행하고 사용자 정의 분류 체계와 연동하는 이 전체 프로세스는 개발자에게 강력한 콘텐츠 모델링 능력을 제공합니다. 마지막으로, 캐싱, 인덱싱, 쿼리 최적화를 통해 CPT를 사용하여 대규모 웹사이트를 구축할 때에도 우수한 성능을 유지할 수 있도록 합니다. CPT를 마스터한다는 것은 WordPress가 갖춘 성숙한 CMS로서의 핵심 잠재력을 활용할 수 있게 된다는 것을 의미합니다.
추천 읽기 처음부터 시작하기: WordPress를 사용하여 개인 블로그를 만드는 완전한 가이드와 최고 실천 방법。
자주 묻는 질문
커스텀 기사 유형(Custom Article Type)과 커스텀 필드(Custom Field)의 차이점은 무엇인가요?
커스텀 콘텐츠 타입(CPT, Custom Post Type)은 완전히 새로운 콘텐츠 유형으로, 독립적인 백엔드 메뉴, 데이터베이스 테이블, 논리 구조를 가지고 있습니다. 이를 통해 “제품”, “이벤트”와 같은 핵심 엔티티를 정의하는 데 적합합니다.
커스텀 필드(Custom Fields 또는 Meta Boxes)는 기존의 콘텐츠 유형(예: 글, 페이지, CPT: Custom Post Type)에 추가적인 속성이나 정보를 추가할 수 있는 도구입니다. 예를 들어, “제품” CPT에 “가격”, “색상”과 같은 필드를 추가할 수 있습니다. CPT는 “무엇인가”를 정의하는 반면, 커스텀 필드는 “어떤 속성을 가지고 있는가”를 설명해 줍니다.
주제의 functions.php 파일이나 독립적인 플러그인에 CPT를 등록하는 것 중 어느 방법이 더 좋을까요?
프로젝트에 특화되어 있으며 현재 주제 디자인과 밀접하게 관련된 CPT(Custom Product Template)의 코드는 해당 테마 파일 내에 배치해야 합니다. functions.php 중은 실현 가능합니다.
하지만 가장 좋은 방법은 CPT(컨텐츠 포맷 플러그인)의 등록 코드를 저장하기 위한 별도의 기능 플러그인을 만드는 것입니다. 이렇게 하면 테마를 변경해도 CPT와 그 내용 데이터가 손실되지 않아 웹사이트 콘텐츠의 지속성과 독립성이 보장되며, ‘관심사 분리(principle of separation of concerns)’ 원칙에도 부합합니다.
기존의 사용자 정의 문서 유형에 새로운 기능을 추가하려면 어떻게 해야 하나요?
당신은 사용할 수 있습니다. add_post_type_support 이 함수는 이미 등록된 CPT(컨텐츠 유형)에 새로운 기능을 추가하는 데 사용됩니다. 예를 들어, 이전에는 “요약” 기능이 지원되지 않았던 “product” CPT에 이 기능을 추가하고 싶다면, 테마의 설정 파일에서 해당 함수를 사용하면 됩니다. functions.php 또는 플러그인에 다음 코드를 추가하세요:
add_action( 'init', 'add_excerpt_support_for_product' );
function add_excerpt_support_for_product() {
add_post_type_support( 'product', 'excerpt' );
} 커스텀 문서 유형의 문서 링크(Permalink)는 어떻게 작동하나요?
CPT를 등록할 때는 다음 단계를 따르세요: rewrite 매개변수의 링크 구조를 설정할 수 있습니다. 예를 들어… 'rewrite' => array( 'slug' => 'product' ) 이렇게 하면 제품 페이지의 링크가 다음과 같은 형태가 됩니다: yourdomain.com/product/some-product/그 아카이브 페이지의 링크는 보통 다음과 같은 형태입니다: yourdomain.com/product/。
CPT를 등록한 후에는 반드시 WordPress 관리자 페이지의 “설정” -> “고정 링크” 페이지로 이동하세요. 아무런 조작을 할 필요가 없으며, 그냥 “변경사항 저장” 버튼을 클릭하기만 하면 됩니다. 이렇게 하면 재작성 규칙이 새로고침되어 사용자 정의 링크가 정상적으로 적용됩니다.
여러 사용자 정의된 기사 유형의 콘텐츠를 어떻게 조회하나요?
사용 중입니다. WP_Query 쿼리를 수행할 때, post_type 파라미터를 배열로 설정하면 여러 CPT를 동시에 조회할 수 있습니다.
$multi_cpt_query = new WP_Query( array(
'post_type' => array( 'post', 'product', 'portfolio' ),
'posts_per_page' => 10,
) ); 이것은 블로그 글, 제품, 사례가 혼합된 “최신 소식” 홈페이지 섹션을 만드는 데 매우 유용합니다.
다음 단계는 무엇인가요?
확장된 독서 및 실무 지식
다음은 이 도움말의 주제와 관련이 있으며 더 깊이 있게 읽기에 적합합니다. 현재 문제와 가장 가까운 문서부터 시작하여 점차 주변 주제로 확장하는 것이 우선순위를 정하는 것이 좋습니다.