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(); ?>と記述するだけです!
ちょっとした小ネタではありましたが、汎用性のあるものは独自関数化することにより、見通しの良いテーマとなりそうですね。

コメントする