What is a custom article type?
Các loại bài viết (Post) và trang (Page) cốt lõi trong WordPress là hai loại nội dung được tích hợp sẵn trong hệ thống. Tuy nhiên, khi đối mặt với nhiều nhu cầu nội dung đa dạng như trình bày sản phẩm, giới thiệu thành viên nhóm, hoặc các trường hợp sử dụng dự án, chúng thường không đáp ứng được đầy đủ yêu cầu. Chức năng mở rộng “Loại bài viết tùy chỉnh” (Custom Post Type – CPT) chính là giải pháp được thiết kế để khắc phục nhược điểm này. Nó cho phép các nhà phát triển định nghĩa các loại nội dung mới với các trường dữ liệu cụ thể, hệ thống phân loại riêng biệt, và giao diện quản lý đặc biệt, từ đó biến WordPress từ một hệ thống blog thành một hệ thống quản lý nội dung mạnh mẽ và linh hoạt.
Khác với việc sử dụng các trường tùy chỉnh để mở rộng các bài viết tiêu chuẩn, CPT (Content Type Profile) tạo ra những thực thể nội dung hoàn toàn độc lập về mặt logic. Ví dụ, một CPT dành cho “sản phẩm” có thể có quy trình đăng bài riêng, trang lưu trữ và trang thông tin chi tiết; cấu trúc dữ liệu cũng như giao diện quản lý nền tảng đều có thể được thiết kế phù hợp với đặc điểm của sản phẩm đó. Điều này giúp nâng cao đáng kể mức độ rõ ràng và tính chuyên nghiệp trong quá trình quản lý nội dung, đồng thời tạo nền tảng vững chắc cho việc xây dựng các cấu trúc trang web phức tạp.
Làm thế nào để tạo loại bài viết tùy chỉnh?
Trong WordPress, có hai cách chính để tạo các loại bài viết tùy chỉnh: đăng ký thông qua mã nguồn và sử dụng các plugin trực quan. Đối với những nhà phát triển muốn đạt được hiệu suất tối ưu và kiểm soát hoàn toàn quá trình thao tác, việc viết mã nguồn là phương pháp được ưu tiên.
Đọc thêm Hướng dẫn toàn diện tối ưu hiệu suất WordPress: Từ cấu hình cơ bản đến tăng tốc bộ nhớ đệm nâng cao。
Đăng ký CPT thông qua mã nguồn (code)
Phương pháp cốt lõi nhất là sử dụng… register_post_type Hàm (Function): Các nhà phát triển cần sử dụng các hàm này trong chủ đề (theme) của họ. functions.php Bạn có thể gọi hàm này trong một tệp tin hoặc một tiện ích mở rộng (plugin) độc lập. Bằng cách truyền một mã định danh duy nhất (slug) và một mảng chứa nhiều tham số, bạn có thể định nghĩa tất cả các thuộc tính của loại bài viết mới, như nhãn (label), mức độ công khai (publicity), các tính năng được hỗ trợ, biểu tượng menu, v.v.
Dưới đây là một ví dụ điển hình về cách tạo một loại bài viết tùy chỉnh có tên “Sản phẩm”:
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' ); Sử dụng plugin để tạo CPT (Content Production Template).
Đối với những người không quen với mã nguồn, các plugin như “Custom Post Type UI” hoặc “Toolset Types” cung cấp giao diện đồ họa để tạo và quản lý các loại bài đăng (Post Types) tùy chỉnh (Custom Post Types – CPT). Bạn chỉ cần điền vào các biểu mẫu trong phần quản trị (backend), thiết lập các tùy chọn cần thiết, và plugin sẽ tự động tạo ra và thực hiện đoạn mã cần thiết cho việc đăng ký loại bài đăng đó. Phương pháp này hiệu quả và nhanh chóng, nhưng có thể gây ra những tác động tiêu cực như làm tăng số lượng phụ thuộc (dependencies) và ảnh hưởng đến hiệu năng hệ thống. Khi lựa chọn plugin, bạn nên xem xét đến tình trạng bảo trì của nó cũng như nhu cầu lâu dài của dự án.
Tạo các mẫu lưu trữ tùy chỉnh và mẫu trang đơn cho CPT (Custom Post Type).
Sau khi bạn đăng ký một loại bài viết tùy chỉnh, WordPress sẽ cố gắng sử dụng các tệp mẫu tương ứng trong chủ đề để hiển thị nội dung của loại bài viết đó. Bằng cách tuân theo các quy tắc về cấu trúc các tệp mẫu trong WordPress, bạn có thể tạo ra các tệp mẫu riêng biệt để kiểm soát chính xác cách hiển thị của các loại bài viết tùy chỉnh (Custom Post Types – CPT).
Mẫu trang lưu trữ tùy chỉnh
Để tạo trang lưu trữ cho loại CPT “Sản phẩm” (tức là trang liệt kê tất cả các sản phẩm), bạn cần tạo một tệp tin trong thư mục chủ đề (theme directory) với tên là… archive-product.php Đây là tệp tin liên quan đến các bài viết thuộc loại “sản phẩm” (product). Trong đó, “product” là tên tham chiếu (slug) được sử dụng khi đăng ký CPT (Custom Post Type). Bạn có thể sử dụng các vòng lặp (loop) chuẩn của WordPress để truy xuất và hiển thị tất cả các bài viết thuộc loại “sản phẩm” này.
// archive-product.php 示例片段
<header class="page-header">
<h1 class="page-title">Sản phẩm của chúng tôi</h1>
</header>
<div class="products-grid">
<?php while ( have_posts() ) : the_post(); ?>
<article id="post-<?php the_ID(); ?>" no numeric noise key 1008>
<a href="/vi/</?php the_permalink(); ?>">
<?php the_post_thumbnail( 'medium' ); ?>
<h2><?php the_title(); ?></h2>
</a>
<div class="entry-excerpt">
<?php the_excerpt(); ?>
</div>
</article>
<?php endwhile; ?>
</div>
<p>Không có sản phẩm nào hiện có.</p>
<?php endif; ?> Template for a single custom article
Tương tự như vậy, để tạo mẫu trang chi tiết cho một sản phẩm cụ thể, bạn cần thực hiện các bước tương ứng. single-product.php Tệp. Mẫu này dùng để hiển thị nội dung đầy đủ của một bài viết “Sản phẩm” đơn lẻ, bạn có thể xuất ra tất cả các trường tùy chỉnh đã thêm trong trình chỉnh sửa bài viết tại đây.
// single-product.php 示例片段
<article id="post-<?php the_ID(); ?>" no numeric noise key 1005>
<header class="entry-header">
<h1 class="entry-title"><?php the_title(); ?></h1>
<div class="product-meta">
<span>价格:</span>
<span>SKU:</span>
</div>
</header>
<div class="entry-content">
<?php the_content(); ?>
</div>
</article>
<?php endwhile; ?> CPT (Content Protection Technology) – Công nghệ Bảo vệ Nội dung: Những ứng dụng nâng cao và tối ưu hóa hiệu suất
Khi trang web của bạn chứa nhiều loại bài viết tùy chỉnh và lượng dữ liệu lớn, việc quan tâm đến các ứng dụng nâng cao cũng như hiệu suất trang web trở nên vô cùng quan trọng. Điều này bao gồm việc xây dựng các truy vấn tùy chỉnh, liên kết dữ liệu giữa các bộ phận khác nh
Sử dụng WP_Query để thực hiện các truy vấn tùy chỉnh
Mặc dù vòng lặp chính của WordPress sẽ tự động xử lý các truy vấn liên quan đến CPT (Custom Post Types), nhưng chúng ta thường xuyên cần thực hiện các truy vấn tùy chỉnh ở các vị trí như bên cạnh trang (sidebar) hoặc các khối nội dung đặc biệt (feature blocks). Trong những trường hợp này, chúng ta nên sử dụng các ph WP_Query Lớp (class), và thông qua nó… post_type Tham số chỉ định CPT (Cost Per Transaction) cần được truy vấn.
// 查询最新 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(); // 重置查询数据
} Liên kết CPT (Code for Procedures in Medicine) với hệ thống phân loại tùy chỉnh
Để tổ chức nội dung trong CPT một cách chi tiết hơn, bạn có thể tạo ra các hệ thống phân loại tùy chỉnh. Ví dụ, cho CPT liên quan đến “sản phẩm”, bạn có thể tạo các nhóm như “Thể loại sản phẩm” và “Nhãn sản phẩm”. Điều này đòi hỏi sử dụng các công cụ hoặc quy trình phù hợp để quản lý các phân loại đó. register_taxonomy Hàm này sẽ được sử dụng khi đăng ký… object_type Các tham số này được sử dụng để liên kết sản phẩm với các mục phân loại (CPT – Category Product Terms). Điều này cho phép bạn phân loại sản phẩm theo nhiều tiêu chí khác nhau, tương tự như cách bạn phân loại các bài viết bằng cách sử dụng thể loại và thẻ mô tả, và từ đó tạo ra các trang lưu trữ dữ liệu
Tối ưu hóa hiệu năng của CPT
Khi lượng dữ liệu tăng lên, các truy vấn sử dụng CPT (Content Performance Tools) có thể ảnh hưởng đến tốc độ truy cập trang web. Các biện pháp tối ưu hóa quan trọng bao gồm:
1. Sử dụng API Transients một cách hợp lý để lưu trữ kết quả truy vấn: Đối với các danh sách sản phẩm (CPT – Catalog Product) không thay đổi thường xuyên (chẳng hạn như các sản phẩm bán chạy), bạn có thể lưu trữ kết quả truy vấn của chúng.
2. Đảm bảo rằng các trường được sử dụng thường xuyên trong các truy vấn của CPT có chỉ mục trong cơ sở dữ liệu: post_type, meta_value Việc tạo chỉ mục (index) cho các dữ liệu (chẳng hạn như tên người, địa chỉ, ngày tháng, v.v.) có thể giúp nâng cao đáng kể hiệu quả của các thao tác truy vấn.
3. Sử dụng trang phân trang và tải chậm: Đối với các trang lưu trữ dữ liệu lớn, hãy đảm bảo kích hoạt chức năng trang phân trang. Đối với các tài nguyên như hình ảnh, hãy xem xét sử dụng công nghệ tải chậm (lazy loading).
4. Tránh thực hiện nhiều truy vấn cơ sở dữ liệu trong vòng lặp: Đặc biệt, cần tránh việc gọi các hàm truy vấn bên trong vòng lặp. get_post_meta Các hàm như vậy được sử dụng để lấy một lượng lớn trường tùy chỉnh; vì vậy, bạn nên cố gắng lấy toàn bộ dữ liệu meta cần thiết cùng một lúc.
Tóm lại
Các loại bài viết tùy chỉnh trong WordPress là nền tảng cơ bản để xây dựng các trang web chuyên nghiệp và phức tạp. Chúng giúp vượt qua những hạn chế của các loại bài viết và trang mặc định, cho phép chúng ta tạo ra những hệ thống quản lý và trình bày độc lập, đầy đủ chức năng cho mọi loại nội dung (như sản phẩm, trường hợp sử dụng, thành viên nhóm, v.v.). register_post_type Các hàm hoặc tiện ích (plugins) được tạo ra dựa trên các mẫu (templates) cụ thể, và sau đó được sử dụng để xây dựng những thành phần riêng biệt phù hợp với từng cấp độ của cấu trúc dữ liệu. archive-{slug}.php 和 single-{slug}.php Từ mẫu (template) đến việc sử dụng nó (using it). WP_Query Việc thực hiện các truy vấn nâng cao và liên kết chúng với các hệ thống phân loại tùy chỉnh giúp các nhà phát triển sở hữu khả năng mô hình hóa nội dung một cách mạnh mẽ. Cuối cùng, bằng cách áp dụng các công cụ như đệm (cache), chỉ mục (index) và tối ưu hóa truy vấn (query optimization), hiệu suất của trang web vẫn được đảm bảo ngay cả khi xây dựng trang web quy mô lớn sử dụng CPT. Việc nắm vững CPT đồng nghĩa với việc bạn đã khai thác hết tiềm năng cốt lõi của WordPress như một hệ quản trị nội dung (CMS) chuyên nghiệp.
Đọc thêm Từ đầu: Hướng dẫn toàn diện và thực hành tốt nhất để xây dựng blog cá nhân với WordPress。
FAQ 常见问题
Sự khác biệt giữa “Loại bài viết tùy chỉnh” (Custom Article Type) và “Trường dữ liệu tùy chỉnh” (Custom Field) là gì?
Các loại bài viết tùy chỉnh (Custom Post Types – CPT) là những loại nội dung hoàn toàn mới, được thiết kế với menu quản trị riêng biệt, bảng dữ liệu và cấu trúc logic độc lập. Chúng rất phù hợp để định nghĩa các thực thể cốt lõi như “sản phẩm” hoặc “sự kiện”.
Các trường tùy chỉnh (Custom Fields hoặc Meta Boxes) là công cụ được sử dụng để thêm các thuộc tính hoặc thông tin bổ sung cho các loại nội dung hiện có (chẳng hạn như bài viết, trang web hoặc CPT – Custom Post Type). Ví dụ, bạn có thể thêm các trường như “Giá” hoặc “Màu sắc” cho loại nội dung “Sản phẩm” (Product). CPT xác định “đó là cái gì”, trong khi các trường tùy chỉnh mô tả “những thuộc tính nào mà loại nội dung đó có”.
Việc đăng ký CPT (Custom Post Type) trong tệp `functions.php` của chủ đề hay trong một plugin độc lập thì cách nào tốt hơn?
Đối với các thành phần đặc thù của dự án (CPT – Custom Project Components) mà có mối liên hệ mật thiết với thiết kế chủ đề hiện tại, hãy đặt mã nguồn của chúng vào trong thư mục chứa các thành phần của chủ đề (theme’s components folder). functions.php Việc này là khả thi.
Tuy nhiên, theo các thực tiễn tốt nhất, bạn nên tạo một plugin chức năng riêng biệt để lưu trữ mã đăng ký của CPT (Custom Post Type). Lợi ích của việc này là khi bạn thay đổi giao diện (theme) của trang web, CPT cùng với dữ liệu liên quan đến nó sẽ không bị mất, từ đó đảm bảo tính bền vững và độc lập của nội dung trang web, phù hợp với nguyên tắc phân tách các thành phần chức năng khác nhau (separation of concerns).
Làm thế nào để thêm các tính năng hỗ trợ mới cho các loại bài viết tùy chỉnh hiện có?
Bạn có thể sử dụng add_post_type_support Có những hàm được thiết kế để bổ sung tính năng hỗ trợ cho các CPT (Custom Product Types) đã được đăng ký. Ví dụ, nếu bạn muốn thêm tính năng “Tóm tắt” cho một loại sản phẩm (CPT) “product” mà trước đây chưa hỗ trợ tính năng này, bạn có thể sử dụng các hàm tương ứng trong theme của bạn. functions.php Hoặc thêm đoạn mã sau vào plugin:
add_action( 'init', 'add_excerpt_support_for_product' );
function add_excerpt_support_for_product() {
add_post_type_support( 'product', 'excerpt' );
} Liên kết bài viết (Permalink) cho các loại bài viết tùy chỉnh hoạt động như thế nào?
Khi đăng ký CPT, hãy thực hiện theo các bước được hướng dẫn. rewrite Các tham số có thể được cấu hình về cấu trúc liên kết (link structure) của chúng. Ví dụ: 'rewrite' => array( 'slug' => 'product' ) Điều này sẽ khiến liên kết đến trang sản phẩm của bạn có dạng như sau: yourdomain.com/product/some-product/Liên kết đến trang lưu trữ của nó thường là… yourdomain.com/product/。
Sau khi đăng ký CPT (Custom Post Type), hãy nhớ truy cập trang “Cài đặt” -> “Liên kết cố định” (Settings -> Fixed Links) trong giao diện quản trị WordPress. Bạn không cần thực hiện bất kỳ thao tác nào khác, chỉ cần nhấp vào nút “Lưu thay đổi” (Save Changes). Điều này sẽ làm mới các quy tắc định tuyến (rewrite rules), đảm bảo rằng các liên kết tùy chỉnh của bạn được áp dụng hiệu quả.
Làm thế nào để truy vấn nội dung của nhiều loại bài viết tùy chỉnh?
Trong quá trình sử dụng… WP_Query Khi thực hiện truy vấn, sẽ… post_type Chỉ cần thiết lập các tham số dưới dạng một mảng, bạn có thể truy vấn nhiều CPT (Cost Per Transaction) cùng lúc.
$multi_cpt_query = new WP_Query( array(
'post_type' => array( 'post', 'product', 'portfolio' ),
'posts_per_page' => 10,
) ); Điều này rất hữu ích cho việc tạo ra một khung nội dung “Tin tức mới nhất” trên trang chủ, trong đó kết hợp cả các bài viết trên blog, sản phẩm và các trường hợp sử dụng (case studies).
Bước tiếp theo, chúng ta nên làm gì tiếp theo?
Đọc thêm và kiến thức thực tế
Những nội dung sau đây liên quan đến chủ đề của bài viết này, thích hợp để tiếp tục đọc sâu hơn. Ưu tiên bắt đầu với bài viết gần nhất với vấn đề hiện tại của bạn, rồi dần dần mở rộng sang các chủ đề xung quanh, hiệu quả thường sẽ tốt hơn.
- WooCommerce Hướng dẫn sử dụng đầy đủ bằng tiếng Trung: Xây dựng cửa hàng trực tuyến của bạn từ con số không
- Hướng dẫn toàn diện về xây dựng trang web: Quy trình hoàn chỉnh từ ý tưởng đến ra mắt và phân tích công nghệ cốt lõi
- Hướng dẫn thực chiến tối ưu hóa SEO: Giải mã chiến lược hoàn chỉnh từ cơ bản đến nâng cao
- Tại sao bạn nên chọn WooCommerce để xây dựng cửa hàng trực tuyến của mình?
- 7 gói plugin WordPress được đề xuất để nâng cao hiệu suất trang web WordPress của bạn