[WP] the_post_thumbnail() 画像の出力方法を the_date() で条件分けする

[WP] the_post_thumbnail() 画像の出力方法を the_date() で条件分けする

ずーっとやらなきゃと思っていながらズルズルひっぱってたのですが、アイキャッチ画像を大きくしました。OGP向けのワイド比率! 過去のアイキャッチと区別したかったので、指定の公開日を境に the_post_thumbnail() の大きさやクラスを変えて出力されるようにしてみました。というメモ。


OGP画像はアイキャッチがいいよね

このブログを始めて、SNSでシェアされたとき用にOGP画像にアイキャッチ画像が適用されるようにしておいたのが、2012年。それが2013年の終わりごろ、アイキャッチが小さいためにSNSシェアの際、違う画像が適用されてしまう事態に。

まったく関係ない画像が適用されるのも困りものなので、投稿内の画像で大きいものをOGP設定するというテコ入れをしておいたのですが。

今思えば、この時点でアイキャッチを大きくする努力をすべきだったなと(´・ω・) わざわざ記事の代表的な感じで作ってるのに、それを使えないのはなんだかなーと。。

かといって、過去記事のアイキャッチを全部作り直すわけには…、、という感じで腰が引けてたのですが、指定の公開日の前後で出し分けして…、と、ようやっと構想を決めて切り替えた次第です。

コード

構想としては、

  • 指定日以前の記事のサムネイルは小さい、後は大きい・比率が違う
  • single.php では、どちらのサムネイルもフルサイズで表示
  • index.php では、前者はフルサイズ表示、後者はサイズ指定&独自クラス付加で出力

というのを目指して、以下は index.php でこんなふうにしたよー、という例です。(あっ、PCレイアウトのみです。スマホ版は違うテーマなので)

<?php
if( has_post_thumbnail() ) { //サムネイルがある場合
	if( get_the_date('Y-m-d') <= '2017-05-09' ){ //指定の公開日以前の場合
		$img = get_the_post_thumbnail( $post->ID, 'full', array('alt'=>get_the_title()) );
	} else { //指定の公開日より後の場合
		$img = get_the_post_thumbnail( $post->ID, array(300, 300), array('alt'=>get_the_title(), 'class'=>'myClass') );
	}
	echo $img; //出力
}
?>

4行目は対象記事が指定日以前の場合、フルサイズでaltに記事タイトルを入れて取得してます。6行目は対象記事が指定日より後の場合、大きさを指定(長辺300px)でaltに記事タイトル、独自のクラスを付加して取得してます。

公開日によってどちらかを取得した後、8行目で出力。

前者の場合は以下のような出力となります(大きさはその画像のフルサイズ)。

<img width="220" height="150" src="xxx.png" class="attachment-full size-full wp-post-image" alt="xxx" />

後者の場合は以下のような出力に。指定した大きさと、独自クラス。「wp-post-image」も一緒に出力されるようです。

<img width="300" height="150" src="xxx.png" class="myClass wp-post-image" alt="xxx" />

独自のクラスがつけられれば、あとはCSSでいけますね! 直近1週間の記事だけサムネイルを大きく表示してレイアウトを変えて…、みたいなことにも使えそう。

参考

Saoriさんいつもありがとうございます♡

公開日:2017/05/15

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)

YouTubeでQ&Aコンテンツを企画しています

運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。