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

Wordpress

Default Thumbnail Plusはアイキャッチが自動設定できる大変便利なプラグインです。長らくお世話になっていましたが、更新されていないのとパフォーマンスがあまりよろしくなかったため代替案を検討しました。個人的にはプラグインを減らしたく、ひとまずfunctions.phpで対応しました。

デフォルトのアイキャッチをプラグインで対応する方法

こんなプラグインがいつのまにかでていました。

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

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

スポンサーリンク

デフォルトのアイキャッチをfunctions.phpで対応する方法

以下のコードになります。

/************************************
** アイキャッチのデフォルト
************************************/
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】投稿にデフォルトのアイキャッチ画像を設定する例

ありがとうございます。

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

スポンサーリンク

カテゴリのアイキャッチをfunctions.phpで対応する方法(追加)

作ってみました。

/****************************************
  カテゴリごとにアイキャッチを指定
****************************************/
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と違って更新のタイミングでアイキャッチが追加される仕様です。

スポンサーリンク

Default Thumbnail Plusの使い方(旧記事)

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をコピーしました