記事ごとにアイキャッチ画像を用意するのが面倒…
全部の記事に「No image」は味気ない…
カテゴリーごとに、自動的にアイキャッチを表示したい…
そんな場合のカスタマイズです。
ブログ運営をしていると、「アイキャッチ画像を作成するのが面倒だ」と感じることがありませんか?
運営しているブログによっては、アイキャッチ画像がそれほど重要でなく、とりあえずカテゴリーごとの画像で分類できれば良いというケースがあります。
そんな時にはカテゴリーごとのアイキャッチ画像を自動的に設定する方法が効果的です。
本記事ではプラグインを使わず、カテゴリーごとのアイキャッチ画像を設定する方法を紹介します。
カスタマイズの概要
本記事で紹介するのはWordPressのthe_postアクションフックを使ったカスタマイズです。
コードの基本的な動作ですが「記事作成時にアイキャッチが未設定の場合にアイキャッチ画像を設定する」というものです。
アイキャッチの画像は記事が属するカテゴリーを判断基準にします。例えば、カテゴリーAに属する記事にはカテゴリーA専用の画像。カテゴリーBに属する記事にはカテゴリーB専用の画像です。
カテゴリーごとにアイキャッチ画像を設定するコード
次のコードをCode Snippetsに貼り付けるか、子テーマのfunctions.phpに貼り付けます。
function default_category_eyecatch() {
global $post;
$user_eyecatch = has_post_thumbnail($post->ID);
if (!$user_eyecatch) {
$preset_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );
if ($preset_image) {
foreach ($preset_image as $attachment_id => $attachment) {
set_post_thumbnail($post->ID, $attachment);
}
}
else if ( in_category('カテゴリーID') ) {
set_post_thumbnail($post->ID, '画像ID');
}
else if ( in_category('カテゴリーID') ) {
set_post_thumbnail($post->ID, '画像ID');
}
else {
set_post_thumbnail($post->ID, '画像ID');
wp_reset_postdata();
}
}
}
add_action('the_post', 'default_category_eyecatch');
記事にアイキャッチが設定してあればその画像を使う。
アイキャッチ画像が設定されていなければ、カテゴリーごとの画像を設定するという内容です。
カテゴリーごとに画像を指定する
サンプルコード内の次の部分で、カテゴリーごとの画像を設定しています↓
else if ( in_category('カテゴリーID') ) {
set_post_thumbnail($post->ID, '画像ID');
}
else if ( in_category('カテゴリーID') ) {
set_post_thumbnail($post->ID, '画像ID');
}
else {
set_post_thumbnail($post->ID, '画像ID');
wp_reset_postdata();
}
実際に使う場合の書き換え例です。
カテゴリー1の場合は画像ID110の画像、カテゴリー2には画像ID111、それ以外のカテゴリーに属する記事には画像ID112の画像を設定する場合↓
else if ( in_category('1') ) {
set_post_thumbnail($post->ID, '110');
}
else if ( in_category('2') ) {
set_post_thumbnail($post->ID, '111');
}
else {
set_post_thumbnail($post->ID, '112');
wp_reset_postdata();
}
カテゴリーの分岐は好きなだけ増やせます↓
else if ( in_category('1') ) {
set_post_thumbnail($post->ID, '110');
}
else if ( in_category('2') ) {
set_post_thumbnail($post->ID, '111');
}
else if ( in_category('3') ) {
set_post_thumbnail($post->ID, '113');
}
else if ( in_category('4') ) {
set_post_thumbnail($post->ID, '114');
}
else if ( in_category('5') ) {
set_post_thumbnail($post->ID, '115');
}
else {
set_post_thumbnail($post->ID, '112');
wp_reset_postdata();
}
画像IDってどこで確認するの?
コードに記載する画像IDはダッシュボード内の「メディア」から確認できます。
以下、画像IDの確認方法です。
「メディア」をクリック↓
画像IDを確認したい画像をクリック↓
URL末尾の「item=●●●」と表示される●●●の部分が画像IDです。
次の画像の場合、112と表示されています。この「112」が画像IDです↓
FAQ
今回のカスタマイズについてFAQ形式でまとめました。
アイキャッチが設定されるタイミングは?
記事編集ページでアイキャッチがないことが前提で「下書き保存」「更新」「公開」をしたタイミングでアイキャッチが設定されます。
公開済み記事のアイキャッチは、どうなりますか?
今回のコードを追加しても、すでに公開済みの記事のアイキャッチ画像は変更されません。
サンプルコードはどこに設定すれば良いですか?
Code Snippetsプラグイン、子テーマを有効化している環境であれば子テーマのfunctions.phpに設置してください。
サンプルコードが使えるテーマは?
サンプルコードはテーマに依存しないWordPress関数を使っています。デフォルトテーマで有効なことを確認しているので、たいがいのテーマで動作します(Arkhe、Lightning、SWELLで動作確認しています)。
まとめ
WordPressでカテゴリーごとにアイキャッチを指定する方法を紹介しました。
アイキャッチ画像を記事ごとに作った方が見栄えが良いのですが、「作るのはちょっと面倒。時間のある時に差し替えたい」という人向けのカスタマイズです。
同じ効果のあるプラグインがあるようですが、「プラグインの数を増やしたくない」という人は試してみてください。
ぜひ活用してみてください!