wordpress WordPress 特定の投稿タイプのサムネイル画像を自動生成させない

2019年5月23日

特定の投稿タイプで不要なサムネイル画像を自動生成させない

特定の投稿タイプの場合に指定したサイズのサムネイル画像を生成させないようにするには、intermediate_image_sizes_advanced フィルターが使えます。

intermediate_image_sizes_advanced フィルターは、画像をアップロードする際に自動的に生成されるイメージサイズをフィルターします。

この場合 is_singular などのページ判定は使用できないので以下のようにしています。

isset($_REQUEST['post_id']) isset($_REQUEST['post'])で投稿 ID がセットされているかを確認しています。$_REQUEST はリクエスト変数(スーパーグローバル変数)です。

[追記 2019/07/11] ご指摘いただき、最新のバージョンでは $_REQUEST['post_id'] では投稿 ID を取得できないことが判明しました。$_REQUEST['post'] または $_POST['post'] で取得できます。

セットされていれば、その投稿 ID を get_post_type() に渡して投稿タイプを取得して判定しています。

投稿タイプが指定したものであれば、削除したいイメージサイズの配列($sizes)の要素を unset() で削除して配列を返します。

それ以外の場合は、イメージサイズの配列($sizes)を変更せずに返します。

以下は、投稿タイプが rental (カスタム投稿タイプ)の場合は、「x-small」と言う add_image_size() で登録したイメージサイズのサムネイル画像を自動的に生成させないようにする例です。

function remove_my_image_sizes($sizes) {
  if ( isset($_REQUEST['post'] ) && 'rental' === get_post_type( (int) $_REQUEST['post'] ) ){
     unset( $sizes['x-small'] );
     return $sizes;
  }
  return $sizes;
}
add_filter( 'intermediate_image_sizes_advanced', 'remove_my_image_sizes' );

アイキャッチ画像や添付ファイルの表示方法などに関する詳細は以下をご覧ください。

WordPress アイキャッチ画像や添付画像