Làm cách nào để thay đổi cấu trúc permalink cho loại bài tùy chỉnh và đó là phân loại?


10

Đây là một bài đăng lại của một câu hỏi trước đây tôi có, nhưng tôi muốn đi vào chi tiết hơn bây giờ để có thể giải quyết hoàn toàn vấn đề này.

Vì vậy, một lần nữa, với các bài đăng (bình thường) thay đổi permalink cũng dễ dàng như đi tới Cài đặt> Permalink và bằng cách thay đổi nó thành bất cứ điều gì bạn thích như được sử dụng rộng rãi %category%/%postname%.html. Tất cả điều này hoạt động. Nếu chỉ điều này là dễ dàng cho loại bài tùy chỉnh và nó cũng là phân loại.

Vì vậy, đây là những gì tôi muốn thực hiện.

  1. http://mywordpress.com/port portfolio.html - Hiển thị tất cả các bài đăng trong tất cả các danh mục.
  2. http://mywordpress.com/port portfolio / music / - Hiển thị tất cả các bài viết trong danh mục này.
  3. http://mywordpress.com/port portfolio / music / trance / - Hiển thị tất cả các bài đăng trong danh mục (trẻ em) này.
  4. http://mywordpress.com/port portfolio/music/trance/Tiesto.html - Hiển thị bài đăng.

Những gì tôi nhận được cho đến nay là như sau:

  1. Trước tiên tôi tạo ra một custom_post_typetên dự án và một taxonomy project_category .
  2. Tôi đã tạo một Danh mục đầu tư trang và cung cấp cho nó Mẫu trang sẽ liệt kê tất cả các post_type = projectbài đăng. Làm cách nào tôi có thể thêm .html vào permalink của các trang? Bây giờ nó liên kết đến http://mywordpress.com/port portfolio trong khi tôi muốn http://mywordpress.com/port portfolio.html . Điều này sẽ giải quyết vấn đề đầu tiên.
  3. Sau đó, mọi thứ sẽ trở nên khó khăn, bởi vì chúng ta không biết trước có bao nhiêu loại con ở đó, thậm chí có thể không có. Vì vậy, cấu trúc chúng tôi đang theo là portfolio/(CATEGORY PATH FROM TOP TO CHILD)/post.html. Tôi vẫn bị mắc kẹt tại thời điểm này. Tôi nghĩ rằng bằng cách nào đó tôi nên thêm danh mục cuối cùng vào đường dẫn và chuyển nó dọc theo dự án_cách , điều này sẽ dẫn đến một tệp taxonomy.php nơi tôi có thể xử lý nó đúng cách.
  4. Tôi đã không giải quyết điều này nhưng nó sẽ có một cái gì đó để làm %postname%.htmlở cuối của một cái gì đó.

Tôi hy vọng vấn đề của tôi đã rõ ràng và có những nhà phát triển dũng cảm sẽ giúp tôi giải quyết vấn đề này đã khiến tôi bận rộn trong bốn ngày ĐẦY ĐỦ!


1
Giải pháp tôi đưa ra trong câu hỏi cuối cùng nên hoạt động theo cách đó, nếu bạn thực hiện đúng. Điều duy nhất là bạn không thể có được phần html
Manny Fleurmond

Có nhưng nó đã bị khóa với một đường dẫn cụ thể, vì vậy chỉ có danh mục / danh mục con / trang trong khi có thể không có danh mục phụ hoặc thậm chí nhiều hơn. Đây là năng động hơn.
Đánh dấu

Hoặc tôi đã không thực hiện đúng cách;)
Đánh dấu

Câu trả lời:


4

Ok tôi nghĩ rằng tôi có thể có một giải pháp. Tôi không biết liệu đây có phải là cách đúng đắn để thực hiện điều này không, nhưng hiện tại nó là thứ duy nhất có vẻ hiệu quả.

add_filter('rewrite_rules_array', 'mmp_rewrite_rules');

function mmp_rewrite_rules($rules) {
    $newRules                               = array();
    $newRules['portfolio/(.+)/(.+?).html$'] = 'index.php?project=$matches[2]';
    $newRules['portfolio/(.+)/?$']          = 'index.php?project_category=$matches[1]'; 

    return array_merge($newRules, $rules);
}


add_filter('request', 'mmp_rewrite_request');

function mmp_rewrite_request($vars) {
    if (isset($vars['project_category'])) {
        if (strpos($vars['project_category'], '/') !== false) {
            $categories = explode('/', $vars['project_category']);
            $vars['project_category'] = $categories[count($categories) - 1];
        }
    }

    return $vars;
}

Bộ lọc yêu cầu là một cách tốt để lọc nếu chúng tôi hỏi một danh mục (thực tế là hạn) và một bài đăng. Nó cho phép chỉ thêm một quy tắc viết lại và nhận trang bài đăng cho dù bài đăng đó có thuộc danh mục, danh mục con hay không.
ZalemCitizen

1

2 phương pháp khác nhau:

* Xem ghi chú ở dưới cùng của bài viết này.


ví dụ: bạn muốn có cấu trúc permalink như vậy:
/ MAIN_CATEGORY / SUB_CAT_2 / Another_SUBCAT / my-post

Lúc đầu , bạn có thể cần đặt permalinks thành /% danh mục% /% postname% . Sau đó...




PHƯƠNG PHÁP 1:

tạo các danh mục tiêu chuẩn ( MAIN_CATEGORY, SUB_CAT_1, and etc..), và đăng ký CUSTOM POST, bao gồm thông số này:

'taxonomies'    => array('category'..)

và sử dụng mã này để thay đổi permalinks: https://wordpress.stackexchange.com/a/195643/33667
Sau đó, sau khi xuất bản POST TÙY CHỈNH (nếu được đính kèm dưới một danh mục), URL sẽ là:
example.com/MAIN_CATEGORY/SUB_CAT_1/my-post



PHƯƠNG PHÁP 2:

(ps phương pháp này không được khuyến khích nếu bạn dự định xuất bản hàng trăm hoặc hàng nghìn bài đăng)

đăng ký POST tùy chỉnh (có tên MAIN_CATEGORY), bao gồm các tham số sau:

    "supports"      => array('page-attributes'......
    "hierarchical"  => true,

sau đó, xuất bản các bài đăng tùy chỉnh như thế này: (tức là xuất bản một số bài đăng tùy chỉnh , được đặt tên . Sau đó, khi bạn xuất bản một bài đăng khác, nhưng chọn làm phụ huynh.
SUB_CAT_2, SUB_CAT_1..SUB_CAT_2





ps
1) Nếu bạn là người mới, hãy xem lại: Đăng ký POST TÙY CHỈNHĐăng ký POST TÙY CHỈNH với TAXONOMY
2) nếu bạn sẽ cần chức năng tìm kiếm cho các cấp độ phụ, sau đó sử dụng truy vấn tìm kiếm tùy chỉnh


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.