WordPressのバージョン4.5.0より、カスタマイズ機能(つまり管理画面)からサイトのロゴが設定できるようになりました。当ブログのWordPressを例にすると、以下のようになっておりますね。
この設定されたロゴを取得するテンプレートタグはget_custom_logo()
となり、<a href="サイトURL" class="custom-logo-link" rel="home" itemprop="url">imgタグ</a>
といった感じで、HTMLタグが返されます。
今回はこのテンプレートタグを元に、以下のような機能を持つ関数を新たに定義してみたいと思います。
- カスタムロゴが設定されていない場合、テキストリンクを出力
- トップページの場合はh1、それ以外の場合はdivで囲う(1ページにh1を一つにしたい想定)
ということで、早速コードですが、以下をfunctions.phpに貼り付けます。
function original_the_custom_logo(){ $logo = $tag = NULL; // ロゴが設定されている場合 if( has_custom_logo() ){ // リンク付きロゴ画像を出力 $logo = get_custom_logo(); } // ロゴが設定されていない場合 else{ // リンク付きテキストで出力 $logo = '<a href="'.home_url().'">'.get_bloginfo( 'name' ).'</a>'; } // トップページの場合 if( is_home() ){ $tag = 'h1'; } // トップページ以外の場合 else{ $tag = 'div'; } echo '<'.$tag.' class="logo">'.$logo.'</'.$tag.'>'; }
所々に記述のあるコメント通りですが、簡単に解説します!
if( has_custom_logo() )
この記述により、カスタムロゴが設定されているか判断させています。if( is_home() )
この記述により、トップページかどうか判断させていますね。
後は、ロゴを表示させたい場所(header.php等)に<?php original_the_custom_logo(); ?>
と記述するだけです!
ちょっとした小ネタではありましたが、汎用性のあるものは独自関数化することにより、見通しの良いテーマとなりそうですね。
コメントする