検索結果のデフォルトのフォールバック画像を変更する方法
SearchWPは、投稿のアイキャッチ画像フィールドを利用して、検索結果にサムネイル画像を表示します。このアプローチは、アイキャッチ画像が割り当てられている標準の投稿タイプではうまく機能しますが、一部のコンテンツタイプにはアイキャッチ画像がない場合や、異なる画像処理が必要な場合があります。これらの状況では、カスタムフォールバック画像を実装して、すべての検索結果で一貫したビジュアルプレゼンテーションを確保できます。
基本的なフォールバック画像の設定
WordPressのpost_thumbnail_htmlフックを使用して、アイキャッチ画像フィールドがない特定の投稿タイプ、またはデフォルトのサムネイル動作を上書きしたい場合に、代替画像を指定できます。このフックは、サムネイル表示を完全に制御し、投稿タイプ、コンテンツ、または定義したその他の基準に基づいて画像表示をカスタマイズできます。
このフックのパラメーターと使用方法の詳細については、WordPress開発者ドキュメントのこちらを参照してください。
メディア画像の結果
検索でメディア画像の結果を扱う場合、アイキャッチ画像に依存するのではなく、元の画像サムネイルを表示するようにpost_thumbnail_htmlフックを変更できます。次の例は、検索結果とSearchWP Live Ajax検索コンテキストにこの機能を実装する方法を示しています。
| <?php | |
| // Set image thumbnail for media image results on search page | |
| add_filter( 'post_thumbnail_html', function( $html, $post_id ) { | |
| // Check if we're in a search context | |
| if ( | |
| ( | |
| is_search() | |
| || doing_action( 'wp_ajax_searchwp_live_search' ) | |
| || doing_action( 'wp_ajax_nopriv_searchwp_live_search' ) | |
| || isset( $_REQUEST['swps'] ) | |
| ) | |
| && 'attachment' === get_post_type( $post_id ) | |
| ) { | |
| $mime_type = get_post_mime_type( $post_id ); | |
| // If it’s an image attachment, use the original thumbnail | |
| if ( strpos( $mime_type, "image" ) !== false ) { | |
| $html = wp_get_attachment_image( $post_id, 'thumbnail' ); | |
| } | |
| } | |
| return $html; | |
| }, 10, 2 ); |
注意: すべてのフックはカスタムのSearchWP Customizations Pluginに追加する必要があります。
PDFメディアの結果
PDF検索結果の場合、プレースホルダー画像を表示するか、カスタムフィールド(ACFでアップロードされたサムネイルなど)を使用したい場合があります。
フォールバック画像を使用した例を次に示します。
| <?php | |
| // Set default thumbnail for PDF results on search page | |
| add_filter( 'post_thumbnail_html', function( $html, $post_id ) { | |
| $mime_type = get_post_mime_type( $post_id ); | |
| // Target PDF media results only | |
| if ( 'attachment' === get_post_type( $post_id ) && strpos( $mime_type, "pdf" ) !== false ) { | |
| $html = "<img src='https://placehold.co/500x500' alt='PDF Thumbnail' />"; | |
| } | |
| return $html; | |
| }, 10, 2 ); |
注意: PDFのサムネイルを割り当てるためにACFフィールドを使用している場合、プレースホルダーを動的なフィールド値に置き換えることができます。

