WordPressのアイキャッチをデフォルト指定/カテゴリ別するプラグインとfunctions.php

WordPress

WordPressのアイキャッチをデフォルト指定/カテゴリ別するプラグイン覚書です。

WordPressのアイキャッチをデフォルト指定/カテゴリ別するプラグイン【乗り換えの歴史】

Default Thumbnail Plusはアイキャッチが自動設定できる大変便利なプラグインです。長らくお世話になっていましたが、更新されていないのとパフォーマンス(プラグインの負荷を調べると重い)があまりよろしくなかったため代替案を検討しました。この記事の初稿は2015年です。

結局、次のような順番で乗り換えて、現在はQuick Featured Imagesです。

Default Thumbnail Plus > functions.php > Category Featured Image(試しただけ、サイト移転時などは使い所はある) > Quick Featured Images

ただ、パフォーマンスの問題を置いておけば、Default Thumbnail Plusはよくできたプラグインだったなと改めて感じましたね。懐かしい。

スポンサーリンク

Quick Featured Imagesの使い方(最新)

長くなりましたので、別記事にしました。

スポンサーリンク

Category Featured Imageでカテゴリのアイキャッチを自動設定

仕様に癖があるが引っ越し時に使える

こんなプラグインがいつのまにかでていました。使い方はインストールすればすぐわかるはず…。

Category Featured Image
カテゴリー単位で投稿用のアイキャッチ画像を指定します。

Bulk Media Register(Media from FTP)の作者さまですね。

個別指定は不可だけど…

Default Thumbnail Plusとは少し仕様が違うようです。

ただ、このプラグイン5分ほど使ってみたところ、カテゴリのみで個別画像の切り替えに対応してないようです。 今回やりたいのは、デフォルトやカテゴリでひとまず割り当てておいて、個別に指定したいものは個別指定できることです。
またこのプラグインを使うと、個別指定したものまで全部上書きしてしまうようです。あらかじめ考えて使いましょう。
ただし、個別指定できる裏技を発見したので、一応うちのサイトで紹介しておきます。

いや、大したことではありません(^^;どちらというと技術に疎い人はこれでいいかもしれません。

カテゴリ指定したのちにプラグインを無効化するのです。そしたら個別指定できます。プラグインを削除すると、そのプラグインに指定した画像の設定は消えますが、アイキャッチ画像自体は残ります。

初期時にカテゴリごとにアイキャッチを割り当てて、あとは消すみたいな使い方をすればわりと使えるかもしれません。
スポンサーリンク

functions.phpでデフォルトとカテゴリのアイキャッチを対応する(2代目プログラムで実装)

Quick Featured Imagesでできるようになったため、以下はプログラミングに興味がある人だけですかね…。

デフォルト

まずはデフォルト画像から。以下のコードになります。

/************************************
** アイキャッチのデフォルト
************************************/
function default_featured_image( $post_id ){
	// post投稿かつアイキャッチ画像が設定されていない場合
	if ( get_post_type( $post_id ) == 'post' && !has_post_thumbnail() ){
		// カスタムフィールド情報を更新してアイキャッチ画像を追加
		update_post_meta( $post_id, $meta_key = '_thumbnail_id', $meta_value = '603' );
	}
}
add_action( 'save_post', 'default_featured_image' );

覚書ついでにめもしておきます。update_post_meta はカスタムフィールド情報を更新する関数です。

アイキャッチ画像はpostmeta のテーブルに格納されています。

引数の説明は以下のとおり。
$post_id はもちろん投稿の id
$meta_key が_thumbnail_id
$meta_value が画像のid
すべて必須の引数です。
$prev_valueは省略可能です。

save_postはフックで投稿の新規追加・更新時に実行される関数です。つまり、記事を更新しないとアイキャッチ画像は更新されません。

meta_valueの調べ方は以下のとおりです。

メディア > ライブラリ > 使う画像を選択 > さらに詳細を編集(クリックはしない)

マウスオーバーすると画面左下にURLが表示されてIDが確認できます。

プログラミングは解釈しただけで、こちらのコードを基本的にそのまま拝借しました。

リファレンス 【WordPress】投稿にデフォルトのアイキャッチ画像を設定する例

ありがとうございます。

時間をみてカテゴリ対応もするかもしれません。

カテゴリ(追加実装)

作ってみました。

この方法であればアイキャッチの指定がない場合のみ用意してくれます。個別指定した場合はそちらが優先されます。

/****************************************
  カテゴリごとにアイキャッチを指定
****************************************/
function auto_thumbnail($post_id)
{
    $post_thumbnail = get_post_meta($post_id, $key = '_thumbnail_id', $single = true);
    // save_postが2回呼ばれる。片方はリビジョンのようなので対策
    if (!wp_is_post_revision($post_id)) {
        // アイキャッチ の指定がない場合に限る
        if (empty($post_thumbnail)) {
            $post_cat = get_the_category();
            $cat = $post_cat[0];
            $thum_cat_id = $cat->term_id;

            //caseはカテゴリID、$meta_valueは画像ID
            switch ($thum_cat_id) {
                case 2:	//カテゴリーが●●
                    update_post_meta($post_id, $meta_key = '_thumbnail_id', $meta_value = '1');
                    break;
                case 5:	//カテゴリーが●●
                    update_post_meta($post_id, $meta_key = '_thumbnail_id', $meta_value = '100');
                    break;
                default: //デフォルト
                    update_post_meta($post_id, $meta_key = '_thumbnail_id', $meta_value = '1000');
                }
        }
    }
}
add_action('save_post', 'auto_thumbnail');

Default Thumbnail Plusと違って更新のタイミングでアイキャッチが追加される仕様です。

画像が読み込まれない

新規投稿・編集画面に入るとアイキャッチがくるくる回っている症状が発生したことがあります。凡ミスです。画像がないとき(番号の書き間違え)、そうなります。

また、MySQLのバージョンが低く致命点なエラーがでていたとき、うまくいかなったので最新版に更新しました。

スポンサーリンク

Default Thumbnail Plusの使い方(初代・仕様は好き)

好みのプラグインでしたが、もう10年更新されていませんのでおすすめしません。

wordpressのアイキャッチ(サムネイル)をカテゴリ別・タグ別に指定するプラグインDefault Thumbnail Plusがあります。

アイキャッチの管理が楽になるDefault Thumbnail Plusの使い方と公式

このプラグインを使うと毎回アイキャッチを何にしようか悩む必要がなく楽です。カテゴリごとにとりあえず指定しておいて、個別でどうしても変えたいものだけ追加する感じでしょうか。

公式です。

Default Thumbnail Plus
Add a default thumbnail image to post's with no post_thumbnail set.

使い方は管理画面から画像を設定して、そこにカテゴリやタグを指定すればいい簡単なものですが、プログラムの優先度がどうなっているかが大事かなという気がしました。Default Thumbnail Plusの優先度について、軽く調べました。

優先度の検証

「Default Thumbnail Plus内の優先度はどうか?」という点ですが、どうやらレイアウトの上の方が優先度が低いようです。つまり、Default Thumbnail Plusのデフォルトの画像が1番優先度が低いです。これはOKです。

タグとカテゴリを両方設定した場合、タグの方が優先度が低いです。保存すると、タグ→カテゴリに順番でソートされます。これはちょっと困ることにたまにあります…。

Default Thumbnail Plusの優先度 まとめ

優先度が高い順にならべます。

  • 個別記事のアイキャッチ
  • Default Thumbnail Plusのカテゴリ
  • Default Thumbnail Plusのタグ
  • Default Thumbnail Plusのデフォルト

タグとカテゴリ、両方指定する可能性があり、その場合、ちょっと微妙なんですよね^^;

解決方法としては、タグのみを使うか、カテゴリのみを使うか、タグ指定しているものはカテゴリを指定しないか、phpのコードを書き換えてしまおうか、などなど。カテゴリと個別記事に指定する方法もありますが、個別は枚数が多くなると、ちょっと面倒くさくなります。それだったらタグのみの方がよさそうかも…。カテゴリが全部同じ画像は、ちょっと無理がでてくる気がしますし。

Default Thumbnail Plusの除外

Excluded postsに番号を入れるとOKです。トップページはアイキャッチがいらない場合があります。

Default Thumbnail Plusのバグ

ついでにバグっぽいものの発見してしまいました…。
中途の画像を削除して保存した場合、これ、ちょっとおかしいですよね^^;
使い方も簡単で便利なプラグインなのですが、この点だけちょっと気をつけて使おうと思います。

ちなみに、画像の消去ではなく、差し替えでいけばいいのかな、と。

コメント

タイトルとURLをコピーしました