どういうこと?
通常の使い分けとしては、bloginfo()
はそのまま出力する時、get_bloginfo()
はPHPの他の箇所などで値を使いたい時に使います。
//bloginfo()
<h1><?php bloginfo( 'name' ); ?></h1>
//get_bloginfo()
$site_title = esc_html( get_bloginfo( 'name' ) );
echo '<h1>'.$site_title.'</h1>';
上記は普通は同じ出力内容ですが、Bogoプラグインでサイトを多言語化しようとした時にこれが違いました。
Bogoではbloginfo()で翻訳後の値を取得する
だそうで、get_bloginfo()
の方だと翻訳前の値が返されます。
なので言語を切り替えた時に適切に翻訳されるためにはbloginfo()
の内容を取得する必要があります。
具体的にはBogoの「テキストの翻訳」の設定画面で入力した「サイトのタイトル」「キャッチフレーズ」の翻訳が、それぞれbloginfo( 'name' )
とbloginfo( 'description' )
によって、選択中の言語で表示されるようになります。
既存テーマ内のget_bloginfo()をbloginfo()に置き換えたい
今回は別の人が作ったサイトの多言語化だけを引き受けたもので、中を見るとサイトタイトルを取得する場面ではget_bloginfo( 'name' )
の値を入れた変数が複数箇所で使われています。
ちなみに使用テーマは「Simplicity2」です。
SEO系のプラグインから吐き出されるタイトルの出力を操作する方法は他に出てくるのですが、ここでは使っていないので、テンプレートの方で直接変えてしまいたい。
結論
例えば下記のようなコードは、
//変更前
if ( is_front_page() ) {
$title = get_bloginfo('name');
echo = $title
}
下記のように置き換えます。
//変更後
if ( is_front_page() ) {
ob_start();
bloginfo('name');
$title = ob_get_clean();
echo = $title
}
これで$title
に入る値を、get_bloginfo('name')
でなくbloginfo('name')
のものにできます。
ただ、いくつかのテンプレートを触る必要があったので、これってfunctions.php
あたりで一括で変えられたりしないのかなーと思いつつ、一応解決です。
実はChatGPTで一発解決してた
テンプレート内で置き換える方法が見つからなかったので聞いてみたのでした。
とても分かりやすい解説付きですぐに解決しました。すごい…
コメントを残す