特定カテゴリに限定して、アイキャッチ画像の代わりに記事内最初の画像を表示させる

プラグインがあるかもしれませんが、子テーマ修正にて対応

覚書として。

・アイキャッチ画像は原則として、すべての記事において設定している前提(設定していない場合は作業ミス)。
・前提を踏まえたうえで、特定カテゴリに属する記事において、「記事内の最初の画像を、アイキャッチとして表示」させたい。
・ただし特定カテゴリに属する記事において、一切の画像が使われていない場合は、アイキャッチ画像を表示させる。

つまり、本記事は「アイキャッチ画像の設定忘れ対策」や「アイキャッチ画像の設定の手間を省くために自動化する」という観点にはそぐわない内容になっています。

現在こちらで利用しているテンプレート「yStandard」で実装してみました。

ファイルとしては、

・template-parts\content\archive.php
・template-parts\content\archive-card.php
※アーカイブ

・template-parts\entry\entry-related.php
※関連記事(各記事の下部に表示できる、同一カテゴリの別記事へのリンク)

をいじった形です。

他にもアイキャッチ画像を読み込む項目はある(ブログカードなど)のですが、これらは状況を見て修正しようと考えています。

以下が実際に書き換えた内容です。

なお、「特定カテゴリの場合」を指定するためのカテゴリID、具体的にはif文の「array(■, ■, ■)」という表記は、本来は「array(1, 2, 3)」といった形で数字等でカテゴリを指定する必要がありますので、このままコピペしても使えません。運用するwordpressで確認した上で指定してください(カテゴリIDを確認する方法はこちらなどが分かりやすいです)。

archive.phpおよびarchive-card.php(修正前)

<?php if ( has_post_thumbnail() ) : ?>
	<figure class="entry-list__figure ratio__item ratio__image">
		<?php
		the_post_thumbnail(
			'post-thumbnail',
			array(
				'class' => 'entry-list__image',
			)
		);
		?>
	</figure>

archive.phpおよびarchive-card.php(修正後)

<?php if ( has_post_thumbnail() ) : ?>
<figure class="entry-list__figure ratio__item ratio__image">
<?php if ( in_category( array(■, ■, ■) ) ) : ?>
	<img src="<?php echo catch_that_image(); ?>" alt="<?php the_title(); ?>" width="100%" class="entry-list__image">
<?php else :?>
	<?php
	the_post_thumbnail(
		'post-thumbnail',
		array(
		'class' => 'entry-list__image',
		)
	);
	?>
<?php endif; ?>
</figure>

entry-related.php(変更前)

<?php if ( has_post_thumbnail() ) : ?>
<figure class="entry-list__figure ratio__image">
<?php the_post_thumbnail( 'post-thumbnail', array( 'class' => 'entry-related__image' ) ); ?>
</figure>

entry-related.php(変更後)

<?php if ( has_post_thumbnail() ) : ?>
	<figure class="entry-list__figure ratio__image">
	<?php if ( in_category( array(■, ■, ■) ) ) : ?>
		<img src="<?php echo catch_that_image(); ?>" alt="<?php the_title(); ?>" width="100%" class="entry-related__image">
	<?php else :?>
		<?php the_post_thumbnail( 'post-thumbnail', array( 'class' => 'entry-related__image' ) ); ?>
	<?php endif; ?>
</figure>