qTranslateプラグイン を使って多言語ウェブサイトを作成しています。このプラグインはnext_posts_link
とprevious_posts_link
テンプレートタグを除いて翻訳の素晴らしい仕事をします。
ユーザーが別の言語を選択した場合、URLは次のように変わります。
http://mysite.com/test/page/2 (デフォルトの言語の場合)
に
http://mysite.com/fr/test/page/2 (フランス語用)
プラグインはqtrans_convertURL($url)
関数を使用してURLの修正/翻訳のための機能を提供します。私が抱えている問題は、next_posts_linkおよびprevious_posts_linkテンプレートタグによって出力されるURLを変更できるようにする適切なフックまたはフィルタを見つけることです。
私が見つけた最も近い2つのWordPressフィルタは以下のとおりです。
add_filter('next_posts_link_attributes', 'my_next_attr');
add_filter('previous_posts_link_attributes', 'my_prev_attr');
どんなヒントでも大歓迎です。
@ t31osからの役に立つヒントのおかげで、この問題は以下のコードで修正することができます。
/***************************************************************
* Function qtranslate_next_previous_fix
* Ensure that the URL for next_posts_link & previous_posts_link work with qTranslate
***************************************************************/
add_filter('get_pagenum_link', 'qtranslate_next_previous_fix');
function qtranslate_next_previous_fix($url) {
return qtrans_convertURL($url);
}
この修正はカスタム投稿タイプでも機能します。
更新しました
この2番目の関数は、next_post_link
とprevious_post_link
テンプレートタグがカスタム投稿タイプでも正しくフィルタリングされるようにします。
/***************************************************************
* Function qtranslate_single_next_previous_fix
* Ensure that the URL for next_post_link & previous_post_link work with qTranslate
***************************************************************/
add_filter('next_post_link', 'qtranslate_single_next_previous_fix');
add_filter('previous_post_link', 'qtranslate_single_next_previous_fix');
function qtranslate_single_next_previous_fix($url) {
$just_url = preg_match("/href=\"([^\"]*)\"/", $url, $matches);
return str_replace($matches[1], qtrans_convertURL($matches[1]), $url);
}
get_pagenum_link
に対してフィルタを実行すると、あなたは望むことができるはずです。
next_posts_link
/previous_posts_link
関数は、それぞれ他の関数を呼び出す関数を呼び出します。これらの関数は、最終的に同じ名前のフィルターを提供するget_pagenum_link
関数に戻ります。
具体的な例が必要な場合はコメントを投稿してください。
単数のポストリンク関数のために、すなわち。 next_post_link
/previous_post_link
(他の複数形ではない読者に注意してください)名前が一致するフィルタフックがあります。 next_post_link
とprevious_post_link
..