Tôi đang xây dựng một trang Wordpress với một số loại bài tùy chỉnh. Mỗi loại bài đăng là một tạp chí khác nhau. Tôi cũng có một trường meta tùy chỉnh cho một năm tạp chí và vấn đề.
Tôi muốn có các url (được sử dụng archive.php):
http://my_site/magazine/name/
http://my_site/magazine_name/year/
http://my_site/magazine_name/year/issue/
Tôi đã làm nó bằng mã:
function magazine_rewrite_tag() {
add_rewrite_tag('%issue_year%', '([0-9]{4})');
add_rewrite_tag('%issue%', '([0-9])');
}
add_action('init', 'magazine_rewrite_tag', 10, 0);
và:
function magazine_rewrite_rules() {
add_rewrite_rule('^([a-z]+)/([0-9]{4})/([0-9])?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]&issue=$matches[3]', 'top');
add_rewrite_rule('^([a-z]+)/([0-9]{4})?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]', 'top');
}
add_action('init', 'magazine_rewrite_rules');
Dĩ nhiên tôi cũng có một truy vấn tùy chỉnh trong archive.php. Và nó hoạt động tốt.
Nhưng bây giờ, các url của tôi cho các bài viết đơn lẻ không hoạt động. Theo mặc định, đó là:
http://my_site/magazine/post-title
nhưng nó hiển thị tất cả các bài viết từ tạp chí như url (và nó đã sử dụng mẫu archive.php):
http://my_site/magazine/
Làm thế nào thêm quy tắc viết lại đúng cho bài viết tùy chỉnh duy nhất? Có thể, tôi muốn có các url cho một bài đăng (chỉ dành cho các loại bài đăng tùy chỉnh đã chọn) ở định dạng này:
http://my_site/magazine/year/issue/post-title
10
là ưu tiên mặc định . Bạn có thể bỏ cả hai trong trường hợp đó hoặc thử số cao hơn. (2) Bạn đã kiểm tra các quy tắc viết lại kết quả chưa? Ngoài ra, hãy đảm bảo bạn kiểm tra thứ tự của các quy tắc đó khi chúng được xử lý theo thứ tự của chúng. Đổ rác$GLOBALS['wp_rewrite']
. (3) Bạn đã thêmquery_vars
rằng có thể xung đột?