1. HOME
  2. WEB制作

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

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

・動作の条件

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

・使用するのに向いている人

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

使い方-サンプルコード

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になります。

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

画像のIDは同じく管理画面から【メディア】→【アイキャッチに設定したい画像】をクリックした時のURLで確認できます。この例ではitem=1070の【1070】が画像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を取得することには成功したんだけど、ここから【複数のカテゴリが設定されている場合の条件処理】が全然考え付かなくなってしまったのでまた今度。