非公開記事に自動的にアイキャッチを設定する
WordPressで非公開の記事に対して自動的に特定のアイキャッチ画像を設定することが可能です。この記事では、カスタムコードを使ってその方法を解説します。
手順1:functions.phpにコードを追加
WordPressテーマのfunctions.php
に以下のコードを追加します。このコードは、非公開の記事が保存される際に指定した画像を自動でアイキャッチに設定します。
function set_default_thumbnail_for_private_posts($post_id) {
// 投稿が保存される際の条件チェック
if (get_post_status($post_id) == 'private') {
// すでにアイキャッチが設定されていない場合に実行
if (!has_post_thumbnail($post_id)) {
// 非公開記事用に設定したい画像IDを指定(メディアライブラリからIDを取得)
$thumbnail_id = 123; // アイキャッチ画像のIDをここに入力
// アイキャッチを設定
set_post_thumbnail($post_id, $thumbnail_id);
}
}
}
add_action('save_post', 'set_default_thumbnail_for_private_posts');
手順2:メディアライブラリでアイキャッチ画像のIDを確認する
上記コードの$thumbnail_id = 123;
の123
は、非公開記事用のアイキャッチ画像のIDに置き換えてください。画像IDは、メディアライブラリで該当する画像を選択し、URLに含まれるattachment_id
から確認できます。
手順3:自動で反映
このコードが適用されると、記事が非公開に設定された際に自動で指定した画像がアイキャッチとして設定されるようになります。また、公開から非公開に変更された場合にもこのルールが適用されます。
これで、非公開の記事に特定のアイキャッチ画像を自動で設定することが可能です。
既存の非公開記事にアイキャッチを一括設定する場合
このコードは「記事が保存される際」に非公開であることをチェックするため、すでに非公開になっている記事には適用されません。もしすでに非公開の投稿にアイキャッチ画像を一括で設定したい場合、次のような方法で対応できます。
手順:手動で一括適用する
以下のカスタム関数をfunctions.php
に追加し、一度だけ実行することで、すでに非公開になっている全ての記事に対して指定したアイキャッチ画像を適用できます。
function set_thumbnail_for_existing_private_posts() {
// 非公開記事を取得
$private_posts = get_posts(array(
'post_status' => 'private',
'posts_per_page' => -1, // すべての非公開記事を取得
));
// 非公開記事用に設定したい画像ID
$thumbnail_id = 123; // アイキャッチ画像のIDをここに入力
// 各記事に対してアイキャッチを設定
foreach ($private_posts as $post) {
// すでにアイキャッチが設定されていない場合のみ設定
if (!has_post_thumbnail($post->ID)) {
set_post_thumbnail($post->ID, $thumbnail_id);
}
}
}
// 一度だけ関数を実行
set_thumbnail_for_existing_private_posts();
実行後の注意点
このコードを一時的にfunctions.php
に追加して保存すると、すでに非公開になっている全ての投稿にアイキャッチが設定されます。実行が終わったら、このコードをfunctions.php
から削除するか、コメントアウトすることを忘れないでください。この関数は一度だけ実行すればよいので、残したままにしておくと不要な処理が行われる可能性があります。
この記事の方法を活用して、非公開記事に効率的にアイキャッチ画像を設定しましょう!