カスタマイズされたページにブログのようなアイキャッチ画像を表示する必要がない場合があります。
その場合はSWELLのフックを使うと、特定のカスタム投稿タイプに対して簡単にアイキャッチの画像を非表示にできます。
そのやり方を紹介します。
この例は、投稿タイプのスラッグがnewsの記事で、記事上部のアイキャッチ画像を非表示にします。SWELLのYouTube動画置換は、記事ごとのアイキャッチ設定を「表示」にしている場合に残ります。メディアの画像ファイルやアイキャッチの登録情報は削除しません。記事一覧のサムネイルを消すためのコードではありません。
SWELLで特定のカスタム投稿タイプのアイキャッチ画像を非表示にする方法
やり方は簡単です。
子テーマ(SWELL CHILD)のfunctions.phpの末尾に、下記のコードを追加します。親テーマのfunctions.phpに書くと、テーマの更新で消えるため避けてください。コード内のnewsは、ご自身のカスタム投稿タイプのスラッグに置き換えてください。
add_filter( 'swell_parts_post_thumbnail', function( $html, $post_id, $is_youtube ) {
// カスタム投稿タイプ「news」の場合、アイキャッチ画像を非表示にする
if ( $is_youtube ) {
return $html;
}
if ( get_post_type( $post_id ) === 'news' ) {
return '';
}
// それ以外の場合は通常通りアイキャッチ画像を表示
return $html;
}, 10, 3 );
変更される画像と残る画像
| 表示場所・内容 | newsでの結果 |
|---|---|
| 記事上部のアイキャッチ画像 | 出力しない |
| SWELLの記事一覧にあるサムネイル | 残る |
| 本文に挿入した画像 | このフックでは変更しない |
| YouTubeへの置換表示 | 残る(記事ごとのアイキャッチ設定が「表示」の場合) |
| アイキャッチの登録・メディアの画像 | 残る |
一覧の画像を残して記事上部だけを消したい場合に、このコードを使います。WordPress 7.1.2・SWELL 2.19.0では、同じnews記事で上部の画像を出力せず、一覧用の画像HTMLを生成できること、本文とアイキャッチの登録情報が残ることを追加で確認しました。
対象記事と通常記事を組にして確認する
| 開く記事・内容 | 期待する結果 |
|---|---|
| newsの通常のアイキャッチ | 記事上部の画像を出力しない |
| newsのYouTube置換表示(記事ごとの設定は「表示」) | 動画用のHTMLを残す |
| 通常の投稿などnews以外 | 渡されたアイキャッチのHTMLをそのまま残す |
| 本文画像・記事一覧 | 上部用フックの対象外として、それぞれの場所で表示を確認する |
まず同じ投稿タイプで、通常の画像とYouTube置換がある記事を1件ずつ確認し、続けてnews以外の記事も開きます。投稿タイプの条件を広げすぎると、通常記事まで対象になるためです。検証環境のWordPressフィルターへHTMLを渡す試験では、YouTube指定・通常投稿・投稿IDを取得できない場合に元のHTMLが残ることを確認しました。YouTubeの実再生は、設置先の公開ページで別途確認してください。
消えないときの確認順
最初に、対象が通常の投稿ではなくカスタム投稿タイプか確認します。newsは表示名の「ニュース」やカテゴリー名ではなく、投稿タイプを登録したプラグイン・コードのスラッグです。その値へ書き換えてから対象記事を開き直します。次に、残っているものが記事上部の画像か、本文画像・一覧のサムネイル・YouTube表示かを確認します。最後に該当ページのキャッシュを消して再確認します。
子テーマとCode Snippetsの片方へ登録し、news以外の通常記事も確認してください。記事一覧そのものの表示条件を変えたい場合は、投稿タイプを指定する人気記事の例を参照できます。
実ニュース記事で確認した表示
実WordPressに登録したnews投稿で、上部のアイキャッチが消え、タイトル・日付・本文が残ることを確認しました。同じ画像を登録した通常投稿では、画像が表示されます。
newsにSWELLのYouTube設定を入れた場合も、YouTube用のfigureとiframeのHTMLは残りました。動画の再生や外部配信の成功を確認した結果ではありません。
対象と対象外に同じ画像を登録して比べると、画像未登録とコードによる除外を区別できます。newsという投稿タイプ名は登録名に合わせて変更し、確認用URLもその投稿タイプの正規URLを使ってください。

YouTube置換と記事ごとの表示設定の関係
| 投稿と個別設定 | 実際の記事上部の出力 |
|---|---|
| news、YouTube設定あり、アイキャッチを非表示 | YouTube用のfigure・iframeを出力しない |
| news、YouTube設定あり、アイキャッチを表示 | YouTube用のfigure・iframeを残す |
| 通常の投稿、YouTube設定あり、アイキャッチを非表示 | YouTube用のfigure・iframeを出力しない |
SWELL 2.19.0の実際の個別記事テンプレートで、上の3条件を確認しました。
記事ごとの「非表示」は、アイキャッチ用フィルターへHTMLを渡す前に処理されます。
そのため、このコードのYouTubeを残す分岐があっても、個別設定で非表示にした動画を表示へ戻すことはできません。
YouTubeを残したい対象記事では、記事ごとのアイキャッチ設定も表示にしてください。
これはYouTube置換の場合の条件です。newsの通常画像は、このPHPの投稿タイプ条件により非表示になります。
今回確認したのはSWELLが返すfigure・iframeのHTMLです。外部YouTubeの取得や実際の動画再生は確認していません。設置先では公開ページで再生できるかも確認してください。
まとめ
簡単なカスタマイズですが、こういった非表示の処理は、CSSで見た目だけ隠すのではなく、PHP側で出力自体を止めると、HTMLの構造もシンプルになります。
この記事で紹介しているコードは、GitHubのMOTOKI-LLC/WAZA-codeにもまとめています。内容が異なる場合は、このページの掲載コードを使ってください。
よくある質問:SWELLで特定のカスタム投稿タイプのアイキャッチ画像を非表示にするとき
このコードで、何が非表示になりますか?
記事では、投稿タイプのスラッグがnewsの記事で、記事上部のアイキャッチ画像を非表示にします。メディアの画像ファイルやアイキャッチの登録情報は削除しません。記事一覧のサムネイルを消すためのコードではありません。
コードは、どこに追加しますか?
記事では、子テーマ(SWELL CHILD)のfunctions.phpの末尾に追加します。親テーマのfunctions.phpに書くと、テーマの更新で消えるため避けます。作業前にfunctions.phpのバックアップを取り、エラーが心配な人はCode Snippetsプラグインにコードを登録します。
newsの部分は、何に書き換えますか?
ご自身のカスタム投稿タイプのスラッグに置き換えます。記事では、newsは表示名の「ニュース」やカテゴリー名ではなく、投稿タイプを登録したプラグイン・コードのスラッグだとしています。
記事一覧のサムネイルや本文の画像も消えますか?
消えません。記事の対応表では、SWELLの記事一覧にあるサムネイルは残り、本文に挿入した画像もこのフックでは変更しません。一覧の画像を残して記事上部だけを消したい場合に、このコードを使います。
YouTube動画に置き換えている記事は、どうなりますか?
記事では、SWELLのYouTube動画置換は、記事ごとのアイキャッチ設定を「表示」にしている場合に残ります。記事ごとの「非表示」は、このコードより前に処理されるため、個別設定で非表示にした動画を表示へ戻すことはできません。YouTubeを残したい記事では、記事ごとのアイキャッチ設定も表示にします。
アイキャッチが消えないときは、何を確認しますか?
記事では、最初に対象が通常の投稿ではなくカスタム投稿タイプか確認します。次に、残っているものが記事上部の画像か、本文画像・一覧のサムネイル・YouTube表示かを確認します。最後に該当ページのキャッシュを消して再確認します。
news以外の通常記事にも影響しませんか?
記事では、news以外の通常の投稿などは、渡されたアイキャッチのHTMLをそのまま残します。投稿タイプの条件を広げすぎると通常記事まで対象になるため、子テーマとCode Snippetsの片方へ登録し、news以外の通常記事も確認します。
元に戻したいときは、どうしますか?
記事では、追加したコード(スニペット)を削除または無効化し、キャッシュをクリアします。なお、確認したのはSWELLが返すHTMLで、外部YouTubeの取得や実際の動画再生は確認していません。設置先では公開ページで再生できるかも確認してください。



