2017-02-08 9 views
1

Wordpressでカスタム言語パーマネントリンクを作成する方法については、ここで実際の解決策を見つけることができません。ワードプレス言語パーマリンク

私はロコの翻訳者プラグイン(基本的には.poファイル、.POTファイルエディタです)

を使用する翻訳のため

私はこのような構造が必要です

domain.com/を - ホームページORIG言語

​​- ホームページ英語

domain.com/blog/ - ブログ投稿一覧nl_NLカテゴリ

domain.com/en/blog/ - en_USのカテゴリ

domain.com/blog/this-is-a-post/からブログ記事一覧 - ブログ記事それはnl_NLカテゴリに

domain.com/blog/en/this-is-a-post/だ場合 - ブログ記事それがen_USのカテゴリにあります場合

の.htaccessはブログ記事のカスタムパーマリンクためのソリューションではありません/ EN /右URLの後に、ワードプレスrが存在する場合

最善の解決策は次のようになりますURLの後ではなく、/ en /の後ろにパーマリンクを付け、getパラメータ "lang = en_US"を送信してください。

/en /すべてが正常でない場合は、

ありがとうございました!

ピーター

+0

あなたには、いくつか探しているようですねこの機能を提供するプラグインですが、非常にカスタムのパーマリンクパターンを探しています。サーバーサイドの変更以外では、それ以外の方法はわかりません。なぜカスタムの.htaccessファイルが出てこないのですか?ブログpermalinkを扱う '.htaccess'ファイルを簡単に作ることができます。 – staypuftman

+0

私が言ったように、.htaccessは解決策ではありません。 post-name-permalinkを使うとhtaccessのルールが上書きされてしまいました。そして、私はプラグインを使用したくない、私はそれをプログラム的に解決するためにうそをつくだろう。 – Peter

答えて

1

最後に、私は解決策を見つけました。

function filter_post_link($permalink, $post) { 

    $cat_ID = get_the_category($post->ID)[0]->cat_ID; 
    if ($post->post_type != 'post') 
     return $permalink; 
    if($cat_ID==3){ 
    return 'en'.$permalink; 
    }else{ 
     return $permalink; 
    } 
} 
add_filter('pre_post_link', 'filter_post_link', 10, 2); 

function my_add_rewrite_rules() { 
    global $wp,$wp_rewrite; 
    $wp->add_query_var('lang'); 
    add_rewrite_rule('^en/?$', 'index.php?lang=en_US', 'top'); 


    add_rewrite_rule('^blog/?$', 'index.php?cat=4', 'top'); 
    add_rewrite_rule('^blog/page/([0-9]+)/?$', 'index.php?cat=4&paged=$matches[1]', 'top'); 

    add_rewrite_rule('^en/blog/?$', 'index.php?lang=en_US&cat=3', 'top'); 
    add_rewrite_rule('^en/blog/page/([0-9]+)/?$', 'index.php?lang=en_US&cat=3&paged=$matches[1]', 'top'); 

    add_rewrite_rule('^en/?([^/]+)/?$', 'index.php?name=$matches[1]&lang=en_US', 'top'); 
    // Once you get working, remove this next line 
    $wp_rewrite->flush_rules(false); 

} 
add_action('init', 'my_add_rewrite_rules'); 

説明:私が代わりにプレーンなURLのパーマリンクを使用したい場合 私が代わりに.htaccessのadd_rewrite_rule()機能を使用することができます。

この関数の形式は.htaccessと非常によく似ていますが、それ以上の説明は必要ありません。ポストスラグの前にURLを

filter_post_link機能力/en/一部、郵便カテゴリID = 3

すべてが魔法のように動作するかどうか! :)

PS: あなたはたとえば、カスタムパーマリンクから値を取得するために「LANG」パラメータを希望の場合、あなたはこのようにそれを行うことができます。

$wp_query->query_vars['lang'] 
+0

非常に面白いアプローチ、共有のおかげで。あなたは、これをブログの投稿などに書くべきです。 – staypuftman

関連する問題