タイトルがちょっとよく分りにくい感じになってしまいましたが、要点を説明すると。
・動作するタイミング
記事新規投稿・編集・下書き時
・動作の条件
- アイキャッチ画像が設定していない時のみ動作
- 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を取得することには成功したんだけど、ここから【複数のカテゴリが設定されている場合の条件処理】が全然考え付かなくなってしまったのでまた今度。