私は現在、フランス語で提供するオプションが必要なワードプレスサイトで作業しています。私は、クエリーストリング変数l
を追加すると、fr_FRのpoとmoファイルでテーマを動作させる方法を見つけました。 site.tld/?l=fr
は、フランス語の翻訳を提供するために、私のfunctions.phpに以下のコードをアクティブにする一方、すなわちWordpressのパーマリンクがカスタムURLの書き換えを無視する方法
site.tld
は、バニラ、英語サイトを生成します:
<?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;
}
}
?>
このセットアップはすでに取り組んでいます。私の質問は次のとおりです。site.tld/?l=fr
の代わりにURLを書き換えるにはどうすればいいですか?fr
というフォルダ構造、つまりsite.tld/fr/
を付け加えることができますか?
英語のようにsite.tld/portoflio/autumn/
のページがあると、site.tld/fr/portfolio/autumn/
はフランス語を吐き出します。私はこのアイデアをアップルのウェブサイトから入手しました。ここで、言語は常にフォルダ構造の先頭に置かれています。
私はすでに、これはhtaccessファイルで外部へのリダイレクトを実現することができます。
RewriteBase/
RewriteCond ^[a-z]{2}/
RewriteRule ^([a-z]{2})/(.*)$ /$2?l=$1 [R,L]
これは動作しますが、私はR
フラグを削除すると、それはisntead見つからないフランス語翻訳404を提供しています。私はかなりのパーマリンクを使用する必要があるので、私は何をしたのかはワードプレスのルールを書き換えていると推測しています。今すぐ私は管理者の一般的なオプションでMonth and name
(/%year%/%monthnum%/%postname%/
)を使用するように設定されています。
私の質問は、wordpressを/fr/
の部分を無視して、正しいページ/投稿/その他を提供するにはどうすればよいですか?
これも可能ですか?私はここで正しい道にいますか?私はあなたの助けが必要です。特に、賢明ではなく、賢明なことをやってください。私はこれを試しましたhttp://pmg.co/a-mostly-complete-guide-to-the-wordpress-rewrite-api私の人生のために私はそれを動作させることはできません。 :/
UPDATE:私は、その後、@からルールを追加して、私のルールは.htaccess
から缶詰されたことを確認した
:[OK]をので、ここで以下@reluからヒントを取って、いくつかの進展がありますReluさんはいつも同じアドレスに私を送ってくれたので、次のように言います。/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;
}
?>
アドレスバーに今/fr
滞在、それは良いことだが、二つの問題が解決しないので:
WordPressは私のメインのインデックスページを提供しています。ルールの一部である
&q=$matches[2]
を使用していないようです。およびロケールはまだ適切に設定されていません。変数
l
が供給されているかどうかを確認したので、echo 'l: $l';
を$l = get_query_var('l');
の後に追加しました。興味深いことに2つのエコーが得られます:l:
とすぐ後のl: fr
です。locale
フィルタが2回実行されていますか?初めてqueryvarの値が表示されないように見えて、次にとfr
が既に出力されているように見えます。その日の終わりにはまだロケールは変更されません。
aaaah helpです。
FINAL UPDATE:欲求不満の私の最後の息で私は再び探索し、このプラグインqtranslateを発見しました。私が必要とすることをします。感謝するよ、@ reluの叙事詩的な努力とstayin pow'rへのesp。
うわー、私はこれを見ました。ありがとう!!私はこれらを追加するときに、彼らは '/ fr'hmmなしのリンクに私を連れて行きます。どんな考えですか? am clueless atm –
これらのルールを.htaccessから削除しましたか?彼らは必要ではありません! – relu
yeap、そうだ..私はまた、ワードプレスのrwrulesがそこにあることを確かめた。その間に私達ができるsum'nがあれば余りにも分かります。ありがとう、 'それは人をpreciate! –