Tôi hiện đang làm việc trên một trang wordpress cần phải có tùy chọn để được cung cấp bằng tiếng Pháp. Tôi đã tìm thấy một cách để làm cho chủ đề làm việc với các tập tin po và po fr_FR khi tôi thêm một biến truy vấn l
. ví dụ:Làm thế nào để làm cho permalinks Wordpress bỏ qua url tùy chỉnh viết lại
site.tld
sẽ mang lại các trang web tiếng Anh vani, trong khi site.tld/?l=fr
sẽ kích hoạt đoạn mã sau vào functions.php của tôi để phục vụ dịch tiếng Pháp:
<?php
// http://codex.wordpress.org/Plugin_API/Filter_Reference/locale
add_filter('locale', 'set_my_locale');
function set_my_locale($lang) {
if ("fr" == substr(strtolower(trim(strip_tags(stripslashes($_GET['l'])))), 0, 2)) {
// set language to french
return "fr_FR";
} else {
// return original locale
return $lang;
}
}
?>
thiết lập này đã được làm việc. câu hỏi của tôi là: làm thế nào để tôi viết lại url để thay vì site.tld/?l=fr
tôi chỉ có thể thêm cấu trúc thư mục với fr
tức là site.tld/fr/
?
như vậy nếu có trang site.tld/portoflio/autumn/
bằng tiếng Anh, site.tld/fr/portfolio/autumn/
sẽ nhổ ra tiếng Pháp. tôi có ý tưởng này từ trang web của Apple, nơi ngôn ngữ luôn được thêm vào cấu trúc thư mục.
tôi đã có thể làm cho điều này xảy ra với một chuyển hướng bên ngoài trong htaccess:
RewriteBase/
RewriteCond ^[a-z]{2}/
RewriteRule ^([a-z]{2})/(.*)$ /$2?l=$1 [R,L]
làm việc này, nhưng một khi tôi loại bỏ các R
cờ nó phục vụ các Pháp-dịch 404 không tìm thấy isntead. Tôi đoán những gì tôi đã làm là rối tung lên với các quy tắc viết lại wordpress bởi vì tôi cần phải sử dụng khá permalinks. ngay bây giờ tôi được thiết lập để sử dụng Month and name
(/%year%/%monthnum%/%postname%/
) trong các tùy chọn chung quản trị.
câu hỏi của tôi là, làm thế nào để tôi làm cho wordpress bỏ qua phần /fr/
và vẫn phục vụ đúng trang/bài/etc?
điều này có thể thực hiện được không? tôi đang đi đúng đường ở đây phải không? tôi cần sự giúp đỡ của bạn đặc biệt là làm những gì WISE và không chỉ là những gì NICE. tôi đã thử điều này http://pmg.co/a-mostly-complete-guide-to-the-wordpress-rewrite-api nhưng đối với cuộc sống của tôi tôi không thể làm cho nó hoạt động. :/
CẬP NHẬT: ok, vì vậy đây là một số tiến bộ được ý tưởng từ @relu dưới đây:
tôi đã đảm bảo rằng quy tắc của tôi đã được đóng hộp từ .htaccess
i sau đó thêm vào các quy tắc từ @ relu nhưng theo cách sau, bởi vì Relu luôn gửi tôi đến cùng một địa chỉ mà không cần /fr
:
<?
// http://pmg.co/custom-wordpress-shortlinks
add_action('init', 'pmgtut_add_rewrites');
function pmgtut_add_rewrites() {
add_rewrite_rule('^([a-z]{2})/?$', 'index.php?l=$matches[1]', 'top');
add_rewrite_rule('^([a-z]{2})/(.*)$', 'index.php?l=$matches[1]&q=$matches[2]', 'top');
}
add_filter('query_vars', 'pmgtut_query_vars', 10, 1);
function pmgtut_query_vars($vars) {
$vars[] = 'l';
return $vars;
}
?>
nay là /fr
trú trong thanh địa chỉ, vì vậy đó là một điều tốt, nhưng hai vấn đề tồn tại:
wordpress đang phục vụ cho tôi những trang danh mục chính. có vẻ như nó không sử dụng phần
&q=$matches[2]
của quy tắc; vàngôn ngữ vẫn chưa được đặt chính xác. tôi đã kiểm tra xem biến số
l
có được nạp hay không, vì vậy tôi đã thêmecho 'l: $l';
sau$l = get_query_var('l');
và thú vị là tôi nhận được hai âm vang: mộtl:
và một số khácl: fr
ngay sau đó. bộ lọclocale
đang chạy hai lần?có vẻ như lần đầu tiên nó không nhìn thấy giá trị của queryvar, và sau đó có vẻ là một lần thứ hai nó kết quả đầu ral:
vớifr
đã có trong đó .. vào cuối ngày miền địa phương vẫn không được thay đổi .
trợ giúp aaaah.
CUỐI CÙNG CẬP NHẬT: trong hơi thở cuối cùng của tôi về sự thất vọng tôi đã tìm kiếm một lần nữa, và thấy Plugin qtranslate này. làm những gì tôi cần. cảm ơn y'all, đặc biệt là nỗ lực sử thi của @ relu và stayin pow'r.
wow xin lỗi tôi vừa thấy điều này. cảm ơn!! ok, vì vậy khi tôi thêm những, họ chỉ đưa tôi trở lại liên kết mà không có '/ fr' hmm .. bất kỳ suy nghĩ? am clueless atm –
Bạn đã xóa các quy tắc đó khỏi .htaccess chưa? Họ không cần thiết! – relu
yeap, đã làm như vậy .. tôi cũng chắc chắn rằng chỉ có 'rwrules wordpress là ở đó .. sẽ cho bạn biết càng sớm càng tốt khi tôi nhận được nó để làm việc. trong khi chờ đợi cũng nên biết nếu có sum'n khác chúng ta có thể làm. cảm ơn nhiều, 'tiền thân nó! –