Viết lại URL loại bài tùy chỉnh?


32

Tôi thiết lập một loại bài tùy chỉnh cho các dự án danh mục đầu tư của tôi. URL chính cho điều này được đặt tại/projects/

Bây giờ tôi cũng đã thiết lập các bài đăng trên blog của mình permalink /articles/*/cho cấu trúc permalink. Điều này có nghĩa là khi tôi đi xem một dự án danh mục đầu tư, URL thay đổi thành/articles/projects/project-name/

Tôi biết phải có một cách để viết lại permalinks chỉ cho loại bài đăng tùy chỉnh dự án của tôi. Nhưng tôi không quen với cú pháp khai báo sên URL - sẽ đánh giá cao bất kỳ trợ giúp nào tôi có thể nhận được!

Câu trả lời:


42

Khi bạn đăng ký loại bài đăng tùy chỉnh, bạn phải xác định rằng quy tắc viết lại không nên được bổ sung với cấu trúc URL hiện có.

Nói tóm lại, điều này có nghĩa là dòng này trong register_post_typecuộc gọi của bạn :

'rewrite' => array('slug' => 'projects'),

nên biến thành thế này:

'rewrite' => array('slug' => 'projects','with_front' => false),

Để biết thêm thông tin, hãy xem rewriteđối số từ mục codex trênregister_post_type

chỉnh sửa: chỉ cần đảm bảo rằng, sau khi cập nhật mã, bạn xóa các quy tắc viết lại bằng cách truy cập Cài đặt> Permalinks. Nếu không, bạn vẫn sẽ thấy các liên kết cũ.


rực rỡ cảm ơn bạn! Chỉ cần làm rõ, tất cả những gì tôi cần làm để xóa quy tắc là vào trang Cài đặt-> Permalinks và nhấn "Lưu thay đổi", đúng không?
Jake

4
Bạn thậm chí không cần phải lưu thay đổi. Chỉ cần mở trang cài đặt Permalinks là đủ (nghĩa là, nếu tệp .htaccess của bạn có thể ghi được. Nếu không, hãy nhấn lưu thay đổi và sao chép mã theo cách thủ công mà nó trả về trong .htaccess của bạn)
0x61696f

2
Điều này dường như không làm việc cho tôi. Bài viết dự án của tôi vẫn sẽ đến example.com/projects/title-of-post. Tôi cũng đã truy cập trang Permalinks. Điều gì có thể gây ra điều này? Không có bất kỳ quy tắc viết lại trong của tôi htaccess.
Desi

Wow, cảm ơn đó là phần còn thiếu! Truy cập trang permalinks không hoạt động, nhưng chỉ TIẾT KIỆM cài đặt permalink hiện tại đã hoạt động :)
Alexander Taubenkorb

Tôi tiếp tục thay đổi mọi thứ mà không tuôn ra các quy tắc viết lại. Cảm ơn vì tiền hỗ trợ!
Tân-007

15

Tôi đã gặp vấn đề này đúng nghĩa là 3 ngày trước, sau đó tôi tình cờ thấy một loạt trên wp.tutsplus.com . Tôi đã trao đổi mã của riêng mình để phù hợp hơn với câu hỏi của bạn, nhưng đây là những gì tôi đã kết thúc sau khi theo dõi loạt bài. Ngoài ra, hãy nhớ rằng điều này là chưa được kiểm tra.

// sets custom post type
function my_custom_post_type() {
    register_post_type('Projects', array(   
       'label' => 'Projects','description' => '',
       'public' => true,
       'show_ui' => true,
       'show_in_menu' => true,
       'capability_type' => 'post',
       'hierarchical' => false,
       'publicly_queryable' => true,
       'rewrite' => false,
       'query_var' => true,
       'has_archive' => true,
       'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes'),
       'taxonomies' => array('category','post_tag'),
       // there are a lot more available arguments, but the above is plenty for now
    ));
}

add_action('init', 'my_custom_post_type');

// rewrites custom post type name
global $wp_rewrite;
$projects_structure = '/projects/%year%/%monthnum%/%day%/%projects%/';
$wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project=");
$wp_rewrite->add_permastruct('projects', $projects_structure, false);

Về mặt lý thuyết, bạn có thể trao đổi bất cứ thứ gì bạn muốn trong URL được lưu trữ trong $projects_structurebiến, đó là những gì tôi đã sử dụng.

Chúc may mắn, và như mọi khi - hãy chắc chắn quay lại và cho chúng tôi biết làm thế nào nó hoạt động! :)


1
Câu trả lời chỉ bao gồm các liên kết thường được coi là không có ích vì những tài nguyên đó có thể (và có thể sẽ) không còn tồn tại trong tương lai. Tóm tắt nội dung.
chrisguitarguy

Đủ công bằng, tôi sẽ làm việc trên một bản sửa đổi thích hợp.
cmegown

11
Ở đó, bây giờ câu trả lời của tôi chứa mã tương tự với mã làm việc mà tôi có trong môi trường sản xuất viết lại thành công URL loại bài đăng tùy chỉnh. Hy vọng nó chứng tỏ là hữu ích hơn!
cmegown
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.