Tôi đã tạo một loại bài đăng tùy chỉnh, trong đó các đối số (đơn giản hóa) là:
register_post_type(
'Event',
'public' => true,
'rewrite' => array( 'slug' => 'eventy'),
'has_archive' => false,
'hierarchical' => false
)
Nó hoạt động tốt nói chung. Tuy nhiên, nếu tôi cố gắng viết lại các URL functions.php
, ví dụ:
function my_post_type_link_filter_function( $post_link, $id = 0, $leavename = FALSE ) {
return str_replace('eventy', 'eventx', $post_link);
}
add_filter('post_type_link', 'my_post_type_link_filter_function', 1, 3);
Kết quả là các URL 'eventx' mới xuất hiện chính xác trong các liên kết, danh sách, v.v., được tạo bởi WordPress. Nhưng khi tôi truy cập các URL 'eventx' đó, tôi nhận được 404. Truy cập URL 'eventy' vẫn hoạt động.
Tôi đã thử thay đổi cài đặt permalinks thành mặc định và quay lại tên bài đăng nhiều lần. Điều này được cho là để thiết lập lại permalinks và khắc phục vấn đề này cho nhiều người tôi đã thấy trực tuyến. Không dành cho tôi.
Bất cứ ai biết nguyên nhân có thể là gì? Làm thế nào để tôi đi về khắc phục sự cố này? Tôi yếu về lý thuyết viết lại URL.
Nếu bạn quan tâm, mục đích của tôi không phải là sự kiện tầm thường → sự thay thế eventx đã đề cập ở trên. Tôi thực sự muốn trượt trong năm / tháng một sự kiện bắt đầu (không phải khi nó được xuất bản) vào URL của nó. Gỡ lỗi khiến tôi nhận ra tôi có một vấn đề cơ bản hơn vì ngay cả việc viết lại x → y tầm thường này vẫn ném 404s.
Cảm ơn vì đã đọc!
[làm rõ thêm]
Hiện tại tôi đã nói ba sự kiện (bài viết trong loại bài đăng tùy chỉnh của tôi) được gọi là "Chuyến đi câu cá". Chúng được gán permalinks theo mặc định như
- mysite.com/events/fishing-trip
- mysite.com/events/fishing-trip-2
- mysite.com/events/fishing-trip-3
Đó là nhàm chán và không phù hợp.
Tôi muốn thay thế
- mysite.com/events/2013/janftime/fishing-trip
- mysite.com/events/2013/may/fishing-trip
- mysite.com/events/2013/may/fishing-trip-2
- mysite.com/events/2014/march/fishing-trip
Đẹp hơn và nhiều thông tin hơn.
Tôi không quan tâm đến việc có các trang theo thể loại như
- mysite.com/events/2013
Năm và tháng chỉ là mỹ phẩm trong URL.
'post_type_link'
chỉ đơn giản là thay đổi URL mà WordPress tạo ra khi nó xuất ra một permalink cho loại bài đăng của bạn. Khi bạn truy cập một trong những URL đó, WordPress không biết phải làm gì với chúng hoặc chúng phải trỏ đến điều gì, vì bạn chưa làm gì để tạo quy tắc viết lại cho các yêu cầu đến. Không biết bạn muốn định dạng nào cho các liên kết của mình, bạn không thể đưa ra câu trả lời ngoài việc chỉ cho bạnadd_rewrite_rule
vàadd_rewrite_tag
.