Phân loại, điều khoản và tập tin mẫu


7

Tôi có loại bài đăng 'sản phẩm' và phân loại phân loại 'loại' được đính kèm. Trong phân loại này, tôi có các thuật ngữ: 'khô-sạch', 'máy giặt', v.v ... Với một số điều khoản phụ trên mỗi điều khoản.

Trong tình huống của tôi, tôi cần hiển thị, ví dụ:

  1. http://example.com/types/washer -> hiển thị tất cả các điều khoản phụ trên đó
  2. http://example.com/types/washer/ {subterm} -> hiển thị tất cả các bài đăng trên đó

Câu hỏi của tôi là:

  1. Làm cách nào để có được URL permalink cho các cụm từ gốc? Tôi thử URL ở trên, nhưng kết quả là 404.
  2. Làm thế nào các tệp mẫu làm việc cho loại vấn đề đó?
    1. taxonomy-types-washer.phpđủ cho trường hợp # 1? hay tôi nên tạo taxonomy-types.phpvà tạo logic ở đó?
    2. trong tâm trí của tôi, sau khi quét phân cấp mẫu , tôi có thể cần taxonomy-types-{term_parent}.phpliệt kê tất cả các thuật ngữ phụ và taxonomy-types.phpliệt kê tất cả các sản phẩm theo thuật ngữ phụ.
    3. Cuối cùng, để hiển thị từng sản phẩm, tôi sẽ phải tạo single-product.php
  3. Về một vấn đề hơi không liên quan. Tôi thấy rằng archive-{posttype}.phpnó không hoạt động khi tôi không có bất kỳ bài viết nào trên đó. Có giải pháp nào cho điều này? ( tôi nên tạo câu hỏi khác nhau, hoặc gắn bó với câu hỏi này )?

CẬP NHẬT

Tôi đã kiểm tra rewrite_rulescác tùy chọn của mình và nó không liệt kê [loại] nào cả. Tôi không biết tại sao. Để kiểm tra nó, tôi thay đổi sên của mình thành product-types, xả permalink và nó liệt kê cái này:

[product-types/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/([^/]+)/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/([^/]+)/page/?([0-9]{1,})/?$] => index.php?types=$matches[1]&paged=$matches[2]
[product-types/([^/]+)/?$] => index.php?types=$matches[1]

Vì vậy, tôi đoán nó đã được đăng ký ngay bây giờ. Tôi cố tải URL, product-types/washernó sẽ chuyển đến 404. Tôi cố tải URL index.php?types=washer. Nó cũng vậy, đi 404. Ngay bây giờ, tôi có các tệp này:

  • phân loại-loại-máy giặt.php
  • phân loại -.php

Vì vậy, tôi không biết điều gì sai với cái này :(.

CẬP NHẬT # 2

Tôi tìm thấy vấn đề. Đó là vì tôi đã bỏ lỡ'rewrite'=>array('hierarchical'=>true)

Đây là cái mới rewrite_rules:

[product-types/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/(.+?)/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/(.+?)/page/?([0-9]{1,})/?$] => index.php?types=$matches[1]&paged=$matches[2]
[product-types/(.+?)/?$] => index.php?types=$matches[1]

Tôi biết điều này có thể được thực hiện wordpress.stackexchange.com/questions/5308/ trên nhưng đối với các nguyên tắc phân loại "không phân cấp".
Bai Internet

Bạn nên tạo một câu hỏi mới cho điểm 3.
scribu

@ fouu, tôi sẽ tạo câu hỏi đó tối nay, khi tôi trở về nhà.
ariefbayu

Câu trả lời:


6

Các loại URL này được hỗ trợ kể từ WP 3.1:

register_taxonomy( 'types', 'post', array(
  'hierarchical' => true,
  'rewrite' => array( 'hierarchical' => true ),
  ...
);

Hãy nhớ để xóa các quy tắc viết lại sau khi thực hiện thay đổi.

Mẫu bạn sẽ sử dụng cho cả hai thuật ngữ cha mẹ và con là taxonomy-type.php:

$current_term = get_queried_object();

if ( 0 == $current_term->parent ) {
  // it's a parent term; display it's child terms using wp_list_categories() etc.
} else {
  // it's a child term; display the posts using The Loop etc.
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.