Xung đột loại sên / sên trang tùy chỉnh - Ngăn chặn sử dụng sên dành riêng khi lưu trang?


13

Tôi có một loại bài đăng tùy chỉnh của danh mục đầu tư (danh mục đầu tư sên) trong chủ đề của tôi và tất cả đều hoạt động tốt ngoại trừ một điều. Khi mọi người tạo một trang với một danh mục đầu tư, ví dụ: example.com/port portfolio, chủ đề nghĩ rằng tôi muốn sử dụng trang lưu trữ loại bài đăng tùy chỉnh, không phải trang của tôi được tạo trong trình chỉnh sửa.

Tôi có thể bằng cách nào đó "dự trữ" danh mục đầu tư sên khi các trang được lưu để đảm bảo nó không bao giờ được sử dụng, có thể được đổi tên thành trang danh mục đầu tư không?

Dự án của tôi sử dụng các phương thức được nêu trong hướng dẫn này, đây là xung đột mà tôi đang đề cập đến:

"Ngoài việc phải vá mã, còn có một lưu ý khác ở đây là bạn không thể gọi sên Trang của mình giống như sên loại bài đăng tùy chỉnh của bạn. Hãy nghĩ về sên loại bài đăng tùy chỉnh của bạn như một từ khóa dành riêng, tuy nhiên, bạn có thể thực hiện tiêu đề của Trang của bạn cùng tên với sên loại bài đăng tùy chỉnh của bạn miễn là sên Trang của bạn có gì đó khác biệt. " - http://wp.tutsplus.com/tutorials/custom-post-type-pagination-chained-method/

Cảm ơn vì lời khuyên!


Một tùy chọn tôi thấy sẽ là xóa cái này khỏi register_post_type () init: 'Rewrite' => mảng ('slug' => 'portfolio', 'with_front' => true) và chỉ đặt 'viết lại' => false và chỉ sống với các mục danh mục "độc nhất" xấu xí.
hhins

Bỏ phiếu cho câu hỏi của bạn vì thậm chí tôi muốn biết câu trả lời! Tôi đã làm việc với các bài đăng tùy chỉnh một vài lần, nhưng tôi không bao giờ nhận thấy điều này, và bây giờ sau khi đọc câu hỏi của bạn, tôi đã thử nó. Bạn nói đúng, WordPress bị nhầm lẫn ở đây!
Rutwick Gangurde

Câu trả lời:


13

2 bộ lọc sau đây cho phép bạn kết nối khi WordPress kiểm tra sên và được tìm thấy trong hàm wp_unique_post_slug () trong tệp wp-gồm / post.php.

Có 2 bộ lọc, một cho các bài đăng phân cấp và một cho các bài viết không phân cấp. Bộ lọc phân cấp cung cấp ID cho cha mẹ bài đăng, vì vậy nếu $ post_parent là 0, bạn biết đây là bài đăng "cơ sở".

Các bộ lọc cũng vượt qua $ post_type nếu bạn muốn thêm các loại bài đăng cụ thể vào logic của mình.

Bằng cách trả về "true", bạn đang nói với WordPress rằng con sên này rất tệ nên WordPress thêm vào một hậu tố, giống như nó sẽ làm nếu bạn đang cố gắng cho chúng tôi một tên bài / sên đã được sử dụng.

add_filter( 'wp_unique_post_slug_is_bad_hierarchical_slug', 'portfolio_is_bad_hierarchical_slug', 10, 4 );
function portfolio_is_bad_hierarchical_slug( $is_bad_hierarchical_slug, $slug, $post_type, $post_parent ) {
    if ( !$post_parent && $slug == 'portfolio' )
        return true;
    return $is_bad_hierarchical_slug;
}

add_filter( 'wp_unique_post_slug_is_bad_flat_slug', 'portfolio_is_bad_flat_slug', 10, 3 );
function portfolio_is_bad_flat_slug( $is_bad_flat_slug, $slug, $post_type ) {
    if ( $slug == 'portfolio' )
        return true;
    return $is_bad_flat_slug;
}

Vì một số lý do, tôi vẫn đang đối mặt với cùng một vấn đề
Tan-007

1

Tạo một trang với một sên 'danh mục đầu tư' và làm cho nó 'Riêng tư'. Nó sẽ bị ẩn khỏi công chúng khi đặt sên khỏi việc sử dụng xa hơn.


1

Đã giải quyết chính xác vấn đề này khi điều tra một vấn đề phân trang. Chúng tôi có trang chủ Tin tức (sên "tin tức") và phân trang không thành công ... cố gắng truy cập / news / page / 2 / luôn dẫn đến '404 - Không tìm thấy'.

Vấn đề hóa ra là loại tùy chỉnh Tin tức của chúng tôi cũng đã được đưa ra "tin tức" sên. Bằng cách thay đổi cái sau (ví dụ thành "news_archive"), vấn đề đã được khắc phục. Điều này để lại các tham chiếu URL tin tức ban đầu không thay đổi. Thay đổi sên trang chủ Tin tức cũng hoạt động nhưng sau đó tất cả URLS sẽ kết hợp với sên đã thay đổi.

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.