こんにちは!株式会社プロットハブのエンジニア小野です。
前回に引き続きBogoについて紹介していきます。
今回はタクソノミーのアーカイブを多言語対応する方法を紹介します。
日本語ページのみ表示されて他の言語では404が発生して解決までに丸一日かかりました。
一度解決すれば簡単なことなので今後すぐに解決できるようにエラーの状況と解決方法をまとめました。
Bogoの設定方法や使い方については以下の記事を参考にしてください。
WordPressサイトをBogoで簡単に多言語化!手軽に始める方法を解説
コピペで完了!Bogoでカスタム投稿を多言語化する最速の方法
WordPressでBogoの言語スイッチャーをカスタマイズする
タクソノミーのアーカイブが404になる問題
冒頭でも書きましたが日本語のページでは表示されるのに他の言語では404が発生してしまいました。
カスタム投稿で作成したnewsを例に説明します。
CPTUIでnewsというカスタム投稿を作成しています。
この時以下のように設定しています。
- リライト True
- カスタムリライトスラッグ 空
- フロントでのリライト False
news_categoryというタクソノミーを作成
この時以下のように設定しています。
- リライト True
- カスタムリライトスラッグ 空
- フロントでのリライト False
https://example.com/news/news_category/
https://example.com/en/news/news_category/
このようなurlの構成になっていました。
英語のページでは404になっていたので解決方法を調査しました。
解決方法
リライトルールが正しく設定されていませんでした。
日本語のページはCPTUIで作成したのでリライトルールが自動で設定されていましたが、他の言語では設定されていませんでした。
リライトルールを設定することで他の言語でもアーカイブページが表示されるようになりました。
functions.phpに以下のコードを記載します。
functions.phpを変更する際は必ずバックアップを取ってから変更してください。
function myUrlRewrite($rules){
$myRule = array();
$myRule["^en/カスタム投稿名/タクソノミー/([^/]*)/?$"] = 'index.php?taxonomy=タクソノミー&tags=$matches[1]&lang=en';
return array_merge( $myRule, $rules );
}
add_action('rewrite_rules_array', 'myUrlRewrite' );
functions.phpを更新したら管理画面の設定からパーマリンクを更新します。
この時何も変更せずに更新するだけで大丈夫です。
更新した際にflush_rewrite_rules
が実行されてリライトルールが更新されます。
functions.phpに記載してもいいのですがそのままにしておくと毎回リライトルールが更新されるためパフォーマンスが悪くなります。
リライトルールについては以下の記事を参考にしてください。
まとめ
リライトルールの設定をするまでに時間がかかりましたが解決方法は簡単でした。
今まであまり触れてこなかったリライトの設定方法についても学ぶことができたので良かったです。
BogoはSEO対策もしやすく、多言語対応も簡単にできるのでWordPressで多言語化をしたい方はぜひ使ってみてください。
弊社ではWordPressで多言語化をしたい方のサポートも行っておりますのでお気軽にお問い合わせください。
コメント