案件で、WordPressの多言語(マルチリンガル)対応にqTranslateというプラグインを使用しました。
その際に、カスタム投稿タイプのシングルページ送りのリンクに言語パラメータがつかず、デフォルトの言語へ移動してしまい困ったので、そのときの対処法をメモ。
原因を探したところget_permalink()
で生成されるリンクに言語パラメータを含むように変換されていませんでした。the_permalink()
で生成されるリンクには言語パラメータが含まれているのになぜ?
そこでこれを解決するためにqTranslateプラグインディレクトリの中にある、qtranslate_hooks.phpに1行追加しました。
add_filter('month_link', 'qtrans_convertURL');
add_filter('page_link', 'qtrans_convertURL');
add_filter('post_link', 'qtrans_convertURL');
add_filter('post_type_link', 'qtrans_convertURL');//★
add_filter('year_link', 'qtrans_convertURL');
add_filter('category_feed_link', 'qtrans_convertURL');
add_filter('category_link', 'qtrans_convertURL');
上記の適当な部分で検索をかけて下さい。そこへ★の行を追加すればOKです。
※ちなみにわたしが追加した時点では309行目と310行目の間でした。
qTranslateプラグインで、post_link
にはqtrans_convertURL
関数が登録されていますが、post_type_link
には関数が登録されていませんでした。そのため、言語パラメータのつかないURLがかえってきていたみたい?