カスタムヘッダーを利用する際のメモ。
バージョン3.4以降、テーマは次のように、カスタムヘッダーをサポートするためにfunctions.phpファイルにadd_theme_support()を使用する必要がある。(add_custom_image_header の使用はバージョン 3.4 から非推奨)
$defaults = array(
'default-image' => '', //デフォルトヘッダー画像へのパスを指定
'random-default' => false, //ランダム表示するか
'width' => 0, //ヘッダー画像の幅
'height' => 0, //ヘッダー画像の高さ
'flex-height' => false, //高さをフレキシブルに(トリミングできるように)するか
'flex-width' => false, //幅をフレキシブルに(トリミングできるように)するか
'default-text-color' => '', //ヘッダーテキストの文字色の指定
'header-text' => true, //ヘッダーテキスト機能のオン・オフ
'uploads' => true, //他の画像をアップロードすることができるようにするかどうか
'wp-head-callback' => '', // ヘッダーをスタイリングするためのコールバックを指定
'admin-head-callback' => '', //管理画面でヘッダープレビューをスタイリングするためのコールバックを指定
'admin-preview-callback' => '', //管理画面でヘッダープレビューを表示するために使用するコールバックを指定
);
デフォルトヘッダー画像へのパスは「get_template_directory_uri()」を利用して指定するか、%s (テーマディレクトリのパス)を利用して指定する。
アップロードが「true」で、flex-height’、’flex-width’が「false」の場合、アップロードした画像が指定した幅と高さと異なる場合、指定した幅と高さ(の割合で)でトリミングできる。
以下は functions.php への記述例。
デフォルトのヘッダー画像に900pxの幅と200pxの高さを設定し、サイトの所有者が他の画像をアップロードすることができるようにして、ヘッダーテキスト機能をオフ、高さをフレキシブルに指定
$args = array( 'width' => 900, 'height' => 200, 'default-image' => get_template_directory_uri() . '/images/header.jpg', 'uploads' => true, //他の画像をアップロードすることができるようにする 'header-text' => false, 'flex-height' => true, //高さをフレキシブルに(トリミングできるように)する 'flex-width' => false, //幅をフレキシブルに(トリミングできるように)しない ); add_theme_support( 'custom-header', $args );
以下を記述すると複数のデフォルトヘッダー画像を登録できる。
register_default_headers(array( //デフォルトのカスタムヘッダー画像を(複数)登録して選択肢を用意
'city' => array(
'url' => '%s/images/city.jpg', //ヘッダー画像のアドレス
'thumbnail_url' => '%s/images/city_thumbnail.jpg', //ヘッダー画像のサムネイルのアドレス
'description' => 'シティ:高層ビル' //ヘッダー画像の説明や日本語名など(省略可)
),
'flower' => array(
'url' => get_template_directory_uri() . '/images/flower.jpg', //'%s/images/flower.jpg'と同じこと
'thumbnail_url' => get_template_directory_uri() . '/images/flower_thumbnail.jpg',
'description' => '花:紫色の花'
)
));
登録した画像は、管理パネル → 外観 → ヘッダーの画面で「デフォルト画像」に表示される。
add_theme_support( ) の default-image として指定した画像は管理画面に表示されないが「画像をリセット」の「デフォルトのヘッダー画像に戻す」をクリックすると選択される。
例えば、img 要素を使ってヘッダー画像を出力する際、テンプレート内でヘッダー画像を出力したい位置に以下のように記述する。
<?php if(get_header_image()): ?> //テーマがヘッダ用イメージをサポートしていれば <img src="<?php header_image(); ?>" height="<?php echo get_custom_header()->height; ?>" width="<?php echo get_custom_header()->width; ?>" alt="" /> <?php endif; ?>
‘wp-head-callback’ => ‘header_style’ でヘッダーをスタイリングするためのコールバックを使用して background-image を使用。
‘admin-head-callback’ => ‘admin_header_style’ で管理画面でのプレビューにもそのデザインが反映されるように管理画面用の CSS も適用させる。
$args = array(
'default-image' => get_template_directory_uri() . '/images/header.jpg',
'width' => 800,
'height' => 200,
'default-text-color' => '666666', //ヘッダー画像の左上に表示されるブログ名の文字色の指定
'header-text' => true, //ヘッダーテキスト機能を有効に
'uploads' => true, //他の画像をアップロードすることができるようにする
'wp-head-callback' => 'header_style', // ヘッダーをスタイリングするためのコールバック
'admin-head-callback' => 'admin_header_style', //管理画面でヘッダープレビューをスタイリングするためのコールバック
);
add_theme_support('custom-header', $args );
function admin_header_style(){ //管理画面でヘッダープレビューをスタイリングするためのコールバック
?>
<style type="text/css">
#headimg h1 {
margin: 0;
padding-top: 20px;
padding-left: 30px;
font-size: 30px;
font-family: Arial, "Times New Roman", Times, serif;
}
#headimg h1 a {
text-decoration: none;
}
#headimg #desc {
padding-left: 30px;
padding-top: 8px;
font-size: 14px;
}
</style>
<?php
}
function header_style(){ // ヘッダーをスタイリングするためのコールバック
?>
<style type="text/css">
#head {
background-image: url(<?php header_image(); ?>);
}
#head h1 a, #head p {
color: #<?php header_textcolor(); ?>;
}
</style>
<?php
}
[/code]
[dlf] header_textcolor() |
カスタムヘッダーの文字色を出力する
パラメータ:なし
戻り値: なし
出力される値に「#」は付いていないので、自分で記述する必要がある。
[/dlf]
<h3>カスタムヘッダーにヘッダーテキストを表示する</h3>
<ul>
<li>カスタムヘッダー画像を CSS で背景に指定して、テキストを表示させる。</li>
<li>'header-text' => true でヘッダーテキスト機能のオンにする。</li>
<li>'default-text-color' => 'ffffff' で文字色を指定。(# は付けない)</li>
<li>'wp-head-callback' でヘッダーをスタイリングするためのコールバックを指定</li>
<li>'admin-head-callback'で管理画面でヘッダープレビューをスタイリングするためのコールバックを指定</li>
<li>'admin-preview-callback'で管理画面でヘッダープレビューを表示するために使用するコールバックを指定</li>
</ul>
以下はカスタムヘッダーを表示する領域の記述。
<ul>
<li>div 要素(id="header_img" )の背景としてカスタムヘッダーの画像を表示させる。</li>
<li>h2 要素の内容をヘッダーテキストとして表示させる。</li>
</ul>
<div id="header_img">
<h2>Blog Title</h2>
</div><!-- end of #header_img -->
以下を functions.php に記述。
$args = array(
'width' => 900,
'height' => 200,
'default-image' => get_template_directory_uri() . '/images/header.jpg',
'uploads' => true,
'header-text' => true, //ヘッダーテキスト機能をオンに
'default-text-color' => 'ffffff', //ヘッダーテキストの文字色の指定
'wp-head-callback' => 'header_style', // ヘッダーをスタイリングするためのコールバックを指定
'admin-head-callback' => 'admin_header_style', //管理画面でヘッダープレビューをスタイリングするためのコールバックを指定
'admin-preview-callback' => 'admin_header_image' //管理画面でヘッダープレビューを表示するために使用するコールバックを指定
);
add_theme_support( 'custom-header', $args );
// ヘッダーをスタイリング(表示)するためのコールバック
function header_style(){
?>
<style type="text/css">
#header_img {
background-image: url(<?php header_image(); ?>);
}
#header_img h2{
color: #<?php header_textcolor(); ?>;
}
</style>
<?php
}
//管理画面でヘッダープレビューをスタイリングするためのコールバック
function admin_header_style(){
?>
<style type="text/css">
#header_img {
background-image: url(<?php header_image(); ?>);
background-repeat: no-repeat;
height: 200px;
}
#header_img h2{
color: #<?php header_textcolor(); ?>;
}
</style>
<?php
}
//管理画面でヘッダープレビューを表示するために使用するコールバック
function admin_header_image() { ?>
<div id="header_img">
<h2>Blog <?php echo header_textcolor(); ?></h2>
</div><?php
}
[/code]
<ul>
<li>div 要素の背景として CSS で画像を表示させるが、CSS では background-image: url(<?php header_image(); ?>); が機能しないので、 ヘッダーをスタイリングするためのコールバックで指定する。</li>
<li>'header-text' => true でヘッダーテキスト機能のオンにすると管理画面ではヘッダーテキストが表示されるが、実際のページでは表示されない。</li>
<li>管理画面で表示されるヘッダーテキストは「bloginfo('name')」と「bloginfo('description')」の値になっているみたいなので、これはヘッダープレビューを表示するために使用するコールバックで指定して実際の値を表示させる。</li>
<li>管理画面で表示されるヘッダーテキストの見栄えは、管理画面でヘッダープレビューをスタイリングするためのコールバックで指定する。</li>
</ul>
<dl>
<dt>ヘッダーをスタイリング(表示)するためのコールバック(header_style())</dt>
<dd>CSS では header_image(); や header_textcolor(); は使用できないのでこの関数で指定する。他の要素にも header_textcolor(); を適用したい場合は、それもここに記述する。</dd>
</dl>
<dl>
<dt>管理画面でヘッダープレビューをスタイリングするためのコールバック(admin_header_style())</dt>
<dd>管理画面で表示されるカスタムヘッダーの見栄えを指定する。</dd>
</dl>
<dl>
<dt>管理画面でヘッダープレビューを表示するために使用するコールバック(admin_header_image())</dt>
<dd>管理画面で実際のカスタムヘッダーの内容を表示させるために指定する関数。これを指定しないと、デフォルトの内容が表示されるみたい。</dd>
</dl>
その他にカスタムヘッダーのスタイルは通常の CSS に記述することができる。(ヘッダーをスタイリング(表示)するためのコールバックに記述することも可能)
#header #header_img {
clear: both;
margin-top: 10px;
background-repeat: no-repeat;
height: 200px;
}