Có, điều này là có thể, nhưng nếu plugin đang tạo một loại bài đăng tùy chỉnh bằng cách sử dụng rewrite => array('slug' => 'post_type')
tham số, thì có khả năng là bạn sẽ không thể thay thế sên.
Bất cứ khi nào loại bài đăng tùy chỉnh được tạo, quy tắc viết lại URL được ghi vào cơ sở dữ liệu. Tùy thuộc vào hành động nào kích hoạt việc tạo loại bài đăng tùy chỉnh (chẳng hạn như hành động init ), WordPress sẽ xóa các quy tắc viết lại và khôi phục các sên của loại bài đăng tùy chỉnh bất kể bạn thay đổi gì.
Điều đó nói rằng, bạn có thể cung cấp sên tùy chỉnh cho các loại bài tùy chỉnh. Ví dụ sau đây giả định rằng bạn có loại bài đăng tùy chỉnh movies
và bạn đang cố gắng thay đổi /movies/
sên thành /films/
.
Để hoàn thành, đây là chức năng cơ bản được sử dụng để xác định movies
loại bài tùy chỉnh. Plugin mà bạn đang tham khảo nên làm một cái gì đó như thế này:
function movies_register_post_type() {
register_post_type(
'movies',
array(
'labels' => array(
'name' => __('Movies'),
'singular_name' => __('Movie')
),
'public' => true,
'has_archive' => true,
'rewrite' => array(
'slug' => 'movies'
)
)
);
} // end example_register_post_type
add_action('init', 'movies_register_post_type');
Bạn có thể sửa đổi bảng tùy chọn bằng cách cung cấp các quy tắc tùy chỉnh của riêng bạn dựa trên loại bài đăng hiện có.
Về cơ bản, chúng tôi sẽ làm điều này:
- Lấy bộ quy tắc hiện có và sau đó viết riêng của chúng tôi bằng sên tùy chỉnh của riêng chúng tôi
- Đặt cho quy tắc mới mức độ ưu tiên cao hơn so với sên của loại bài tùy chỉnh
Đây là cách bạn có thể làm điều này:
function add_custom_rewrite_rule() {
// First, try to load up the rewrite rules. We do this just in case
// the default permalink structure is being used.
if( ($current_rules = get_option('rewrite_rules')) ) {
// Next, iterate through each custom rule adding a new rule
// that replaces 'movies' with 'films' and give it a higher
// priority than the existing rule.
foreach($current_rules as $key => $val) {
if(strpos($key, 'movies') !== false) {
add_rewrite_rule(str_ireplace('movies', 'films', $key), $val, 'top');
} // end if
} // end foreach
} // end if/else
// ...and we flush the rules
flush_rewrite_rules();
} // end add_custom_rewrite_rule
add_action('init', 'add_custom_rewrite_rule');
Bây giờ, bạn sẽ có hai cách để truy cập phim của mình:
/movies/Back-To-The-Future
/films/Back-To-The-Future
Lưu ý rằng tôi không khuyên bạn nên hooking add_custom_rewrite_rule
vào init
hành động vì nó sẽ cháy quá thường xuyên. Đây chỉ là một ví dụ. Một nơi tốt hơn để áp dụng chức năng sẽ là kích hoạt chủ đề, kích hoạt plugin, có lẽ là hành động save_post, v.v. Tùy thuộc vào những gì bạn cần làm, bạn có thể chỉ cần kích hoạt nó một lần hoặc chỉ một vài lần.
Tại thời điểm này, bạn có thể muốn xem xét cập nhật permalinks cho loại bài đăng tùy chỉnh để sử dụng ' /movies/
sên. Ví dụ: nếu bạn điều hướng đến /films/
, bạn sẽ thấy một danh sách tất cả các bộ phim của bạn nhưng di chuột qua tiêu đề sẽ tiết lộ rằng /movies/
con sên vẫn đang được sử dụng.
Để tiến thêm một bước, về mặt kỹ thuật, bạn có thể kích hoạt chuyển hướng 301 để bắt tất cả các liên kết /movies/
để chuyển hướng đến /films/
đối tác của họ , nhưng tất cả phụ thuộc vào những gì bạn đang cố gắng thực hiện.