Tạo cấu trúc permalink tùy chỉnh cho các ngôn ngữ


9

Tôi đã viết một hệ thống đa ngôn ngữ đơn giản, theo đó, nhấp vào biểu tượng cờ sẽ đặt cookie một năm có chứa mã ngôn ngữ hai chữ cái (ví dụ: nl, de, v.v.).

Tôi tham gia vào wphành động để đọc giá trị cookie, sau đó sử dụng the_titlethe_contentcác bộ lọc để hiển thị ngôn ngữ chính xác (các ngôn ngữ khác nhau được nhập thông qua metaboxes trên màn hình chỉnh sửa trang / bài đăng).

Tất cả đều hoạt động tuyệt vời ngoại trừ tôi cũng muốn có permalinks cho từng phiên bản ngôn ngữ, theo đó mã ngôn ngữ hai chữ cái nằm giữa tên miền và cấu trúc permalink thông thường. Tôi đang sử dụng %postname%cấu trúc permalink, vì vậy tất cả những điều sau đây sẽ hợp lệ:

http://example.com/nl/about-us
http://example.com/de
http://example.com/fr/2012/03
http://example.com/es/this-is-a-post-title

Nếu ngôn ngữ hiện tại là tiếng Anh, thì không nên sử dụng mã hai chữ cái (nó sẽ chỉ là permalink bình thường).

Cho đến nay tôi đã sử dụng query_varsbộ lọc để thêm một var truy vấn được gọi lang, nhưng đó là một cách tôi đã có, tôi không chắc các bước tiếp theo là gì. Lời khuyên nào cũng được đánh giá cao!



1
cảm ơn @ l2aelba, câu trả lời đó đủ gần với những gì tôi cần với một số thay đổi nhỏ.
Simon Blackbourn

Bạn có tên miền phụ cho điều này hay chỉ một trang web duy nhất
kennethjfalbous

chỉ là một trang web duy nhất
Simon Blackbourn

Câu trả lời:


1

Câu hỏi của bạn đủ phức tạp để tự trả lời, nhưng tôi sẽ đề nghị bạn cài đặt qTranslateplugin. Như mô tả của plugin nói:

Chọn một trong 3 Chế độ để làm cho URL của bạn đẹp và thân thiện với SEO. - Mọi nơi tương thích? Lang = en, đơn giản và đẹp / en / foo / hoặc đẹp và gọn gàng en.yoursite.com

Vì vậy, bạn có thể thử kiểm tra mã của plugin và xem cách họ thực hiện hoặc chỉ sử dụng nó.


1
cảm ơn vì liên kết, tôi sẽ xem thử liệu tôi có thể giải mã được mã không.
Simon Blackbourn

-1

Đây là bộ lọc tôi đang sử dụng:

function em_wpml_dbem_taxonomy_category_slug($option){
$lang = get_bloginfo('language');

if( $lang === 'es-ES' ){
    $option = 'eventos/categorias';
} else {
    $option = 'events/categories';
}
return $option;
}
add_filter('pre_option_dbem_taxonomy_category_slug', 'em_wpml_dbem_taxonomy_category_slug');

2
Vui lòng thêm một lời giải thích cho câu trả lời của bạn - cảm ơn.
Nicolai
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.