【解決】SEOプラグインYoastのパンくずで多言語プラグインBogoの翻訳が表示されない

起こった問題

Yoastでパンくずリンクを表示するときに、

<?php
if ( function_exists('yoast_breadcrumb') ) { yoast_breadcrumb( '<p id="breadcrumbs" class="breadcrumbs">','</p>' );
}
?>

というコードをfooter.phpなど、表示したいところに、挿入するんですが、多言語プラグインBogoを利用しているときに、その言語で表示されないという問題が起こりました。

カテゴリ名、「ほげほげ」の翻訳を「hogehoge」とBogoで設定してるのに、英語ページで、「ほげほげ」と表示されてしまう。

解決方法

下記のコードをfunctions.phpに書いて対応。
“wpseo_breadcrumb_links”というhookがyoastのbreacrumb表示で用意されてるので、カテゴリのリンクが含まれているときに、get_cat_name(), get_category_link()を使ってその言語のタイトル、リンクを挿入し直してます。

add_filter('wpseo_breadcrumb_links','my_breadcrumb_links');
function my_breadcrumb_links($links) { $breadcrumb = []; foreach ($links as $val) { if($val['term_id']) { $val['text'] = get_cat_name($val['term_id']); $val['url']=get_category_link($val['term_id']); } array_push($breadcrumb, $val); } return $breadcrumb;
}

その他BogoとYoastの不具合など

/category/hogehgoe/というカテゴリURLの/category/をとる設定がyaostで用意されてるんですが、その設定をONにすると子カテゴリmoemooeがあるとき/en/hogehgoe/moemoe/というURLでアクセスできない問題も起こりました。

これはcategoryをとる設定をOFFにして対応。

タイトルタグの翻訳表示は下記のサイトで説明されてる方法でうまくいきます。

サイトのタイトルやキャッチフレーズをBogoによって多言語化する方法 | 株式会社LIG

ちなみに

Breadcrumb NavXTというパンくずメニュー表示プラグインだと、うまく翻訳されて表示されてたんですが、投稿のメインカテゴリの設定が反映されないネックがあったので、yoastのパンくずメニューを使おうと思った次第です。