WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
WEB制作
[WordPress]検索テンプレートを分ける方法
コーダーのKです。
WordPressでは、検索結果ページのテンプレートファイルとして基本的にsearch.php
が使用されます。
しかし、投稿タイプごとに検索結果のデザインや内容を変えたい時など1つのsearch.php
だけでは対応が難しい場合があります。
そこで今回は、投稿タイプごとに異なる検索テンプレートを自動で切り替える方法をご紹介します。
どのような状況で分けるか
カスタム投稿タイプを使って「商品(product)」「お知らせ(news)」のコンテンツがあったとします。
しかし、検索結果ページを共通のsearch.php
にしてしまうと、投稿タイプごとのデザインや必要な情報が表示できず、ユーザーにとってわかりにくいページになってしまいます。
- 商品検索なら商品画像や価格を表示
- ニュース検索なら公開日やカテゴリを表示
投稿タイプごとのテンプレートを切り替える方法
テーマのfunctions.php
に追加するだけで、投稿タイプごとの検索テンプレートを自動で適用させることが可能です。
/* 検索結果テンプレート切り替え */
add_filter('template_include', 'custom_search_template');
function custom_search_template($template)
{
if (is_search()) {
$post_types = get_query_var('post_type');
foreach ((array) $post_types as $post_type)
$templates[] = "{$post_type}-search.php";
$templates[] = 'search.php';
$template = get_query_template('search', $templates);
}
return $template;
}
使い方
使用したい投稿タイプごとに、テンプレートファイルをテーマフォルダに用意します。
〇〇〇〇-search.php
〇にはカスタム投稿のポストタイプに合わせます。
- product-search.php
- news-search.php