お手軽WordPress Tips:post_class()にアイキャッチ画像を使用した記事の場合のclassを追加する

Ads

WordPressにはpost_class()という関数が
あって、自動で要素にclassを付けてくれ
るんですが、この中にアイキャッチ画像
を使用した投稿の場合にclassを追加する
という、誰に需要があるのか分からない
Tipsシリーズです。

post_class()は僕も殆ど使ったことが無かったんですが(大量のclassが付くので)投稿フォーマットの出現で少し使うようになりました。投稿フォーマットに関しては以前記事を書いたのでご参照下さい。

で、そのpost_class()に、アイキャッチ画像を使った投稿があった際にclassを加える、という方法です。

コード

functions.phpに以下を加えます。

function add_eyecatch_class($classes) {
	global $post;
	if( has_post_thumbnail($post->ID) ) { $classes[] = 'eyecatch'; }
		return $classes;
}
add_filter('post_class', 'add_eyecatch_class');

で、いつものようにpost_class()を使えばいいだけ。

<div <?php post_class(); ?>>

で以下のように実装されます。※長いので少し端折ってます。

<div class="post-60 format-standard post category-jquery category-1 eyecatch">

アイキャッチが使われていない投稿にはeyecatchは含まれません。因みにアイキャッチは和製英語です。どうでも良いですね。

条件分岐より楽じゃないですかね。と思ったけどあんま変らんかな?個人的にはfunctions.phpでいろいろ管理したい派です。

余計なclassを抜く

逆にclassを取りたいなら以下のようにします。

function remove_otiose_class($classes) {
	$classes = array_diff($classes, array('hentry','post','type-post','status-publish'));
	return $classes;
}
add_filter('post_class', 'remove_otiose_class');

ただ、post-IDとかの消し方が良く分からない。というか考えてない。wp-includes/post-template.phpあたり見れば良さそうですけども・・

僕はさほど実害無いので消さなくてもいいやって感じなんですけど、簡単に消せる自由もあってもいい気もしますね。あるのかな?w

お前そんな事も出来ないのか、みたいな素敵なデベロッパーさんからのトラバお待ちしています。

[note]素敵なデベロッパーきましたー!
WordPress で Post Class から Post ID を消す
有難う御座いましたXD
[/note]

尚、コードは以下を参照しました。
via:WP-Snippets