WordPressで特定の投稿タイプの検索結果ページをカスタマイズする方法


  1. テンプレートファイルの作成: まず、テーマディレクトリ内にsearch-{post_type}.phpという名前のファイルを作成します。{post_type}は、検索結果を表示する投稿タイプのスラッグです。たとえば、もし投稿タイプのスラッグが"post"であれば、ファイル名はsearch-post.phpとなります。

  2. テンプレートファイルのカスタマイズ: 作成したテンプレートファイルに、検索結果ページのデザインや表示内容をカスタマイズするコードを追加します。例えば、以下のようなコードを追加することができます。

<?php
    get_header();
    if ( have_posts() ) {
        while ( have_posts() ) {
            the_post();
            // 検索結果を表示するコードをここに追加
        }
    } else {
        // 検索結果が見つからなかった場合のコードをここに追加
    }
    get_footer();
?>

上記の例では、have_posts()関数を使用して検索結果が存在するかどうかを確認し、存在する場合はwhileループ内でthe_post()関数を使用して個々の投稿を表示しています。また、検索結果が見つからなかった場合にはelseブロック内のコードが実行されます。

  1. テーマのfunctions.phpファイルの編集: テーマのfunctions.phpファイルに以下のコードを追加することで、検索結果ページのテンプレートファイルを適用するように設定します。
function custom_search_template( $template ) {
    if ( is_search() ) {
        $post_type = get_query_var( 'post_type' );
        if ( $post_type ) {
            $template = locate_template( array( "search-{$post_type}.php", 'search.php' ) );
        }
    }
    return $template;
}
add_filter( 'template_include', 'custom_search_template' );

上記の例では、is_search()関数を使用して検索結果ページかどうかを確認し、get_query_var()関数を使用して現在の投稿タイプを取得します。その後、locate_template()関数を使用してテンプレートファイルを探し、適用します。