【wordpress】で新規投稿・編集・保存時にカテゴリ別のアイキャッチ画像を自動で設定する

wordpress

タイトルがちょっとよく分りにくい感じになってしまいましたが、要点を説明すると。

・動作するタイミング
記事新規投稿・編集・下書き時

・動作の条件
アイキャッチ画像が設定していない時のみ動作
function.phpで設定したカテゴリのみで動作
複数のカテゴリを選択している場合は、動作が微妙なので非推奨。
親カテゴリとその下の子カテゴリを使う場合は、子カテゴリの設定した画像が優先して使われます。

・使用するのに向いている人
カテゴリをそんなに多く設定しない人
アイキャッチ画像を自分で用意するのが面倒な人

スポンサーリンク

使い方-サンプルコード

参考リンク
WordPressのアイキャッチ画像に任意のデフォルト画像を登録する方法 – かちびと.net
このコードの大部分はこちらのページを参考にしました。

functions.phpに以下のコードを任意の位置に記載します。

add_action( 'save_post', 'auto_default_thumbnail' );
function auto_default_thumbnail( $post_id ) {
    $post_thumbnail = get_post_meta( $post_id, $key = '_thumbnail_id', $single = true );
    if ( !wp_is_post_revision( $post_id ) ) {
        if ( empty( $post_thumbnail ) ) {
            $post_cat=get_the_category(); 
            $cat=$post_cat[0];
            $auto_id = $cat->cat_ID;
            //記事投稿・編集・下書き保存時に自動でアイキャッチ画像を設定
            switch ($auto_id){
                case 1://case 【1】の部分にカテゴリID、$meta_value = 【'897'】に画像のIDを入れる
                update_post_meta( $post_id, $meta_key = '_thumbnail_id', $meta_value = '897');
                break;
                case 5://wordpress
                update_post_meta( $post_id, $meta_key = '_thumbnail_id', $meta_value = '1062');
                break;
                case 15://photoshop
                update_post_meta( $post_id, $meta_key = '_thumbnail_id', $meta_value = '1063' );
                break;
                case 9://javascript
                update_post_meta( $post_id, $meta_key = '_thumbnail_id', $meta_value = '1064' );
                break;
                case 20://jQuery
                update_post_meta( $post_id, $meta_key = '_thumbnail_id', $meta_value = '1065' );
                break;
                case 36://css
                update_post_meta( $post_id, $meta_key = '_thumbnail_id', $meta_value = '1066' );
                break;
                case 28://php
                update_post_meta( $post_id, $meta_key = '_thumbnail_id', $meta_value = '1067' );
                break;
            }
        }
    }
}

設定する部分

カテゴリIDは自動で取得するように書いているので、caseの部分で条件分岐させています。
表示させる画像の設定はmeta_valueの値に書きます。

カテゴリIDの確認方法はデータベースで直接見るか、wordpress管理画面から【投稿】→【カテゴリー】→【確認したいカテゴリ】の編集画面のURLで確認できます。
画像の例ではtag_id=4の【4】がカテゴリIDになります。

カテゴリURLの確認の画像

カテゴリURLの確認の画像

データベースから見る場合は、【wp_terms】の【term_id】がカテゴリIDとなります。

データベースのカテゴリIDの位置の画像

データベースのカテゴリIDの位置の画像

画像のIDは同じく管理画面から【メディア】→【アイキャッチに設定したい画像】をクリックした時のURLで確認できます。
この例ではitem=1070の【1070】が画像IDです。

画像IDの確認画像

画像IDの確認画像

備忘録

元々記事管理画面のアクションでやりたい事があったので、調べていた時に思いついたので書いてみました。
思いつきついでに色々と勉強になりました。

カテゴリIDの取得が結構簡単に出来たのが良かった。

//カテゴリIDの取得
$post_cat=get_the_category(); 
$cat=$post_cat[0];
$auto_id = $cat->cat_ID;

ただこれじゃあ複数のカテゴリIDは取得できないので、複数取得する場合はforeachで回して配列から抽出する。

//記事に設定されているカテゴリを全取得
$post_cat=get_the_category();
foreach ($post_cat as $cat) {
    $category_id = $cat->term_id;
    echo $category_id;
}

これで複数のカテゴリIDを取得することには成功したんだけど、ここから【複数のカテゴリが設定されている場合の条件処理】が全然考え付かなくなってしまったので断念。

この記事が気に入ったら
『いいね』しよう!