joppot

コピペで絶対動く。説明を妥協しない

プログラミング

wordpressのbogoでサイトで使用する言語を「en-US」から「en」に変更する方法

投稿日:2017年3月27日 更新日:

Pocket


概要

みなさんこんにちはcandleです。
今回はbogoプラグインのカスタマイズです。bogoはwordpressのサイトを簡単に他言語に対応することができる素晴らしいプラグインです。
ただ、言語の指定で汎用性英語を選べない問題があります。

英語の記事を書く時、必ずしも国を限定して書いているわけではない場合があります。
ところがbogoには「en-UK」や「en-CA」や「en-US」は選べるのですが「en」が選べません。

ソースコードを見た所、これは言語一覧をwordpressの関数から持ってきていて、その中に汎用性英語がないからです。

対策として、実践したのが、とりあえず「en-US」を選び、表示する時だけ、文字列を置換して「en」と表示する様にしました。

もしかすると、今後の開発でこの辺が修正されるかもしれません。

ちなみに言語に「en」を選ぶことはgoogleの公式にも可能であると記述されてます。

https://support.google.com/webmasters/answer/189077?hl=ja

関連記事

wordpressのbogoプラグインのショートコードをカスタマイズする



前提

wordpressにbogoがインストールされている
wordpressテーマをいじることができる

SPONSORED LINK


en-USがどこで使われているか確認する

最初に、どこでen-USが使われているか、確認します。
自分のブログの英語に翻訳されたページでwebインスペクタを開いて、
DOMに対して「en-US」を検索してみます。

最初にわかるのはhtmlタグのlangの値です。

<!DOCTYPE html>
<!–[if lt IE 7]>
<html class=”ie6″ lang=”en-US”> <![endif]–>
<!–[if IE 7]>
<html class=”i7″ lang=”en-US”> <![endif]–>
<!–[if IE 8]>
<html class=”ie” lang=”en-US”> <![endif]–>
<!–[if gt IE 8]><!–>
<html lang=”en-US”>

次に、headerタグの中のlinkタグのalternateの値です。
link alternateで指定されたURLは同一コンテンツで翻訳したものですよという記述です。

<link rel=”alternate” hreflang=”en-US” href=”http://localhost:8080/alice_blog/wp/en/2017/03/26/33/” />
<link rel=”alternate” hreflang=”ja” href=”http://localhost:8080/alice_blog/wp/2016/02/14/23/” />

最後の1つはbodyの所にclass属性でen-USが付いているのですが、そちらは変更してもしなくてもSEOには関係ないので、放置します。

まとめると
htmlのlangの値とalternateの値をen-USからenに変更する必要が有ります。


htmlのlangの値を変更する

htmlのlangを変更するにあたって、以下のサイトを参考にさせてもらいました。
https://wordpress.org/support/topic/how-to-change-the-hreflang-annotation-and-the-lang-attribute-from-en-us-to-en/

自分のテーマのフォルダの中にあるfunctions.phpを開きます。ない場合は作ります。
一般に以下の場所にあります。

wp-content/themes/テーマ名/functions.php

開いたら、以下を記述しましょう。

add_filter( 'language_attributes', 'language_attributes_fix' );
function language_attributes_fix( $language_attributes ) {
  return str_replace('en-US','en', $language_attributes);
}

保存したら、再度ブログを確認してみましょう。
lang=”en”になっています。


alternateの値を変更する

今度はalternateの値をenに変更します。
同じく、functions.phpに以下を記述しましょう。

add_filter( 'bogo_rel_alternate_hreflang', 'bogo_rel_alternate_hreflang_fix' );
function bogo_rel_alternate_hreflang_fix($languages) {
 foreach ($languages as $key => $language ) {
   $languages[$key]["hreflang"] = str_replace('en-US', "en", $language["hreflang"]);
 }
 return $languages;
}

このソースコードは汎用性を高めるために$languagesをforeachで回して、
全ての言語に対して置換をかけていますが、
もしも、$languages配列のどの場所にen-USが入っているかわかっているならこの様に書いた方がパフォーマンスは上がります。

function bogo_rel_alternate_hreflang_fix($languages) {
$languages[1][“hreflang”] = str_replace(‘en-US’, “en”, $languages[1][“hreflang”]);
return $languages;
}

正し、新しく翻訳する言語を加えたりすると、配列の位置が変わるので注意してください。
確認すると、alternateがenになっています。

以上になります。

まとめ

上記の方法でひとまず、最終的に見える形ではen-USからenに以降ができました。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-プログラミング
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

react0.14 + gulp + express + babelでReactのチュートリアル環境構築をする

概要 みなさんこんにちはcandleです。今回は、react0.14のnodeの環境構築をします。 react0.14はまだまだ、開発段階にあり、しばしば仕様変更が行われています。 0.13の時では使 …

railsのgonで別ページでリロード後turbolinksで移動したら変数がundefindする場合の対処

概要 (追記 2016/05/18 この方法を行うと、turbolinksで問題が起きました。 turbolinksで移動した回数だけ、javascriptが実行されてしまいました。 例えば、 < % ...

phpのsnappyライブラリをmacで使用して、webサイトのサムネイルを取得する

概要 みなさんこんにちはcandleです。今回はsnappyを使用して、ウェブサイトのサムネイルを自動的に取得したいとおもいます。 snappyはそれ自体がhtmlを画像にするスクリプトではなく、wk …

railsのsimple-captcha gemを使用してform_forを使ったフォームを画像認証する

概要 みなさんこんにちはcandleです。公に開かれたフォームはスパムや総当り攻撃を受けやすいです。 そこで、画像認証を導入して、悪意のあるフォームを拒否してみましょう。 simple-captcha …

PEARのDBライブラリのインストールと使い方

概要 みなさんこんにちはcandleです。PEARには複数の便利なライブラリがあります。 その中の1つに実はもう古くなってあまり推奨されていませんが、データベースにつないだり、データベースの値を取得す …

プロフィール


ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー

twitter

スポンサードリンク

アーカイブ