Giải pháp đầu tiên có thể là sử dụng API Cài đặt và tạo 2 trường "Mô tả sản phẩm" và "Mô tả sử dụng" , sau đó hiển thị trong mẫu của bạn các trường đó dễ dàng như sau:
$options = get_option('my_theme_options');
echo $options['prod_description'];
// echo $options['usage_description'];
Tuy nhiên, API cài đặt không phải là phần tốt nhất của lõi WP và có thể tạo một trang cài đặt chỉ cho các trường không có giá trị.
Một cách tiếp cận khác là sử dụng trang (với một mẫu trang tùy chỉnh ) làm kho lưu trữ.
Tạo một trang và gọi nó là "Lưu trữ sản phẩm"
Trong đó đặt một cái gì đó như thế:
<?php
/*
Template Name: Products Archive
*/
get_header();
if ( have_posts() ) the post();
the_content(); // this will output the page content
$p_query = new WP_Query('post_type=products');
if ( $p_query->have_posts() ) { while( $p_query->have_posts() ) {
$p_query->the_post();
// this will require a 'entry-product.php' where you can put all your product markup
get_template_part('entry', 'product');
} }
wp_reset_postdata();
get_footer();
Sau đó, trong phần phụ trợ của bạn, tạo một trang và gán nó cho mẫu vừa tạo. Viết bất cứ điều gì bạn muốn trong nội dung trang và khi bạn sẽ mở trang, bạn sẽ thấy nội dung trang và các sản phẩm.
Điều tương tự có thể được thực hiện cho trang phân loại. Chỉ cần thay đổi mẫu trang và truy vấn trong đó.
Nếu vì bất kỳ lý do gì, bạn cần sử dụng archive-products.php
làm kho lưu trữ sản phẩm, một giải pháp thay thế là tạo một mẫu tùy chỉnh, nhưng chỉ sử dụng nó để lấy nội dung trang.
Tạo một tệp php trong chủ đề của bạn và đặt tên là 'page-prod-description.php' . Trong tập tin này chỉ đặt:
<?php
/*
Template Name: Products Description
*/
wp_safe_redirect( home_url() );
exit();
Tập tin này làm gì, đang tạo một mẫu trang tùy chỉnh. Mẫu đó có thể được đính kèm vào các trang, nhưng những trang đó không thể được gọi trực tiếp , bởi vì nếu bạn thử nó, bạn sẽ được chuyển hướng đến trang chủ.
Bây giờ hãy đăng nhập vào phần phụ trợ của bạn và tạo một trang, đặt tên là "Mô tả sản phẩm" và gán mẫu trang vừa tạo. Nếu bạn cố gắng truy cập trang, http://example.com/product-description
bạn sẽ được chuyển hướng đến trang chủ.
Trong mẫu lưu trữ sản phẩm của bạn archive-products.php
, bạn có thể sử dụng nội dung được chèn trong trang đó như sau:
$desc = get_pages('meta_key=_wp_page_template&meta_value=page-prod-description.php');
if ( ! empty($desc) ) {
$page = array_shift($desc);
echo apply_filters('the_content', $page->post_content );
}
Bây giờ khách hàng của bạn có thể đăng nhập vào phụ trợ và chỉnh sửa trang "Mô tả sản phẩm" và mọi thứ được ghi trong nội dung trang sẽ được hiển thị trong trang lưu trữ.
Tương tự, tất nhiên, có thể được thực hiện để lưu trữ phân loại.
main_query
đối tượng$wp_query
và khiến nó không xuất ra quyềnpost_type
cho truy vấn xảy ra trên các trang lưu trữ. Điều này sẽ làm cho các cuộc gọi của bạn đến các bộ lọc nhưpre_get_posts
đối với một trang lưu trữ không có giá trị. Đây là vấn đề chính. Wordpress cũng cần cung cấp một phương tiện để QUẢN LÝ Lưu trữ loại bài đăng và Nội dung lưu trữ phân loại.