WordPress講座(個別相談)

WordPressのテンプレートタグbloginfoは、サイト名やキャッチフレーズの表示など、あちこちのテンプレートでサイト情報を表示するときに使われています。

bloginfoの用途

bloginfoの使用例(サイト名・キャッチフレーズの表示)

テーマをカスタマイズしたり自作するときも役立つ命令ですが、使い間違えると意図しない結果になります。たとえば、サイトのURLを取得するため、bloginfo('URL')と呼び出すとURLが表示されずに、なぜかサイト名が表示されます。

ここでは、「bloginfo('URL')」を実行するとサイト名が表示されてしまう仕組みを説明します。同じような問題が起きたときの参考にしてください。

スポンサーリンク

bloginfoの仕組み

WordPressのソースコードからbloginfoの仕組みを見てみましょう。bloginfoのベースになる命令は、get_bloginfo関数です。WordPressインストール先の「wp-includes/general-template.php」の628行目あたり(WordPress 4.4.1の場合)に書かれています。

以下は、get_bloginfo関数の条件分岐に関するコードを抜粋したものです。「条件分岐」という仕組みによって、bloginfo('設定')で指定された設定に応じて各種サイト情報の表示が可能になります。

switch( $show ) {
    case 'home' : // DEPRECATED
    case 'siteurl' : // DEPRECATED
        …略…
    case 'url' :
        $output = home_url();
        break;
    case 'wpurl' :
        $output = site_url();
        break;
    case 'description':
        $output = get_option('blogdescription');
        break;
    case 'rdf_url':
        $output = get_feed_link('rdf');
        break;
    case 'rss_url':
        $output = get_feed_link('rss');
        break;
    case 'rss2_url':
        $output = get_feed_link('rss2');
        break;
    case 'atom_url':
        $output = get_feed_link('atom');
        break;
    case 'comments_atom_url':
        $output = get_feed_link('comments_atom');
        break;
    case 'comments_rss2_url':
        $output = get_feed_link('comments_rss2');
        break;
    case 'pingback_url':
        $output = site_url( 'xmlrpc.php' );
        break;
    case 'stylesheet_url':
        $output = get_stylesheet_uri();
        break;
    case 'stylesheet_directory':
        $output = get_stylesheet_directory_uri();
        break;
    case 'template_directory':
    case 'template_url':
        $output = get_template_directory_uri();
        break;
    case 'admin_email':
        $output = get_option('admin_email');
        break;
    case 'charset':
        $output = get_option('blog_charset');
        if ('' == $output) $output = 'UTF-8';
        break;
    case 'html_type' :
        $output = get_option('html_type');
        break;
    case 'version':
        global $wp_version;
        $output = $wp_version;
        break;
    case 'language':
        $output = get_locale();
        $output = str_replace('_', '-', $output);
        break;
    case 'text_direction':
        …略…
        if ( function_exists( 'is_rtl' ) ) {
            $output = is_rtl() ? 'rtl' : 'ltr';
        } else {
            $output = 'ltr';
        }
        break;
    case 'name':
    default:
        $output = get_option('blogname');
        break;
}

※「wp-includes/general-template.php」より抜粋

「switch」は条件分岐を記述するPHPの構文です。たとえば、

    case 'url' :
        $output = home_url();

によって「bloginfo('url')」を実行するとサイトのURLが表示される仕組みです。

同じように

    case 'name':
    default:
        $output = get_option('blogname');

によって、「bloginfo('name')」を実行するとサイト名が表示されます。

bloginfoの「その他」とは?

上記の条件分岐のポイントは最後の「default:」です。条件分岐の「それ以外は」を処理する部分です。

この部分では、「case 'name':」と同じように、サイト名が表示される仕組みになっています。つまり、「bloginfo('設定')」の設定がどれにも当てはまらない場合(その他の場合)はbloginfo('name')と同じようにサイト名が表示されます。

bloginfoの動作イメージ
  • bloginfo('url') → サイトURLを表示
  • bloginfo('description') → キャッチフレーズを表示
  • bloginfo('name') → サイト名を表示
  • bloginfo(その他の設定) → サイト名を表示

「その他の場合」とは、指定した文字が「url」でもなければ「description」でもない。「template_url」でもなければ「admin_email」でもない。どれにも当てはまらないということです。

たとえば、「description」とすべきなのに「discription」と入力ミスした場合などに「その他」に振り分けられてサイト名が表示されてしまいます。

問題の原因は「大文字と小文字の区別」

では、bloginfo('URL')はどうでしょうか。入力ミスには見えませんが、「url」だとは判断されず、「その他」に分類されてしまいます。それは、大文字と小文字が区別されるためです。

プログラミングでは一般的に大文字と小文字が区別され、「URL」と「url」は違う文字だと判断されることが多いです。

話が長くなりましたが、このような仕組みでbloginfo('URL')とすると、bloginfo('url')とは違い、どれにも当てはまらない「その他」だと判断されてサイト名が表示されるということです。思い当たる方はご注意ください。

この記事をSNSで共有する
WordPressでお困りのときはご相談を
この記事を書いた西沢直木が直接、WordPress個別サポートで対応します。
こんなときはご相談を
  • WordPressの使い方(ページやメニューの作り方を教えてほしい)
  • カスタマイズ(機能の追加やデザイン調整をお願いしたい)
  • トラブル対応(画面真っ白・「ログインできない」を解決したい)
マンツーマンなので相談内容は自由です。いただいた課題をその場で解決、CSSやPHPも目の前で修正します。気軽にご相談ください。
カスタマイズがうまくいかないときは
お急ぎのときはWordPressメールサポートで対応します。ご活用ください。
wordpress講座受講予約
WordPress講座の問い合わせ先

関連記事

スポンサーリンク