アイキャッチ画像の機能は、個々の投稿や固定ページにその投稿を端的に表すことができる機能です。
アイキャッチ画像を有効にする
WordPressはアイキャッチ画像を制御する機構が組み込まれていますが、初期状態では無効になっています。
この機能の有効にするには、テーマの functions.php に以下のadd_theme_support()
という関数を追加します。
function twpp_setup_theme() {
add_theme_support( 'post-thumbnails' );
}
add_action( 'after_setup_theme', 'twpp_setup_theme' );
ページを限定してアイキャッチ画像を有効にする
投稿ページだけでアイキャッチ画像を有効化する場合など、ページのタイプを限定してアイキャッチ画像の機能を有効にするには、add_theme_support
の関数を指定します。
投稿ページに限定してアイキャッチ画像を有効
function twpp_setup_theme() {
add_theme_support( 'post-thumbnails', array( 'post' ) );
}
add_action( 'after_setup_theme', 'twpp_setup_theme' );
固定ページに限定してアイキャッチ画像を有効
function twpp_setup_theme() {
add_theme_support( 'post-thumbnails', array( 'page' ) );
}
add_action( 'after_setup_theme', 'twpp_setup_theme' );
固定ページとカスタム投稿タイプ(hogehoge)に限定してアイキャッチ画像を有効
function twpp_setup_theme() {
add_theme_support( 'post-thumbnails', array( 'page', 'hogehoge' ) );
}
add_action( 'after_setup_theme', 'twpp_setup_theme' );
アイキャッチ画像を判別して出力
ページにアイキャッチ画像が割当られているかどうかを、has_post_thumbnail
という関数で調べます。
通常は、WordPressループの中で has_post_thumbnail
関数を実行して、アイキャッチ画像があるかどうかで出力を分けるようにします。
<?php if(has_post_thumbnail()): ?>
<?php the_post_thumbnail('thumbnail'); ?>
<?php else: ?><!--アイキャッチ画像がない場合は、デフォルトの画像を表示-->
<img src="<?php echo get_template_directory_uri(); ?>/images/default.jpg" alt="デフォルトのアイキャッチ画像"/>
<?php endif; ?>
アイキャッチ画像の出力
ページにアイキャッチ画像が割当られている場合、the_post_thumbnail()
をループの中で使いアイキャッチ画像を出力します。
<?php the_post_thumbnail(); ?>
この関数には、パラメータとして以下の文字列を渡すことができます。
種類 | 文字列 | 画像のサイズ |
---|---|---|
サムネイル | 'thumbnail' | 150×150 |
中サイズ | 'medium' | 300×300 |
大サイズ | 'large' | 1000×1000 |
画像のサイズは、WordPressの[設定]→[メディア]でそれぞれ設定されているので、変更が可能です。
ループの中で出力するには、以下のように記述します。
<?php the_post_thumbnail( 'thumbnail' ); ?>
アイキャッチ画像のURL(文字列)を取得して出力
アイキャッチ画像のURL(文字列)を出力するには、the_post_thumbnail_url
の関数を使います。
<img src="<?php the_post_thumbnail_url(); ?>" alt="">
imgタグの中に記述して、アイキャッチ画像を表示することができます。
<?php if(has_post_thumbnail()): ?>
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<img src="<?php the_post_thumbnail_url(); ?>"/>
</a>
<?php endif; ?>