p06-6:カスタム投稿を検索結果に反映させる「Custom Post Type UI」
公開日:2018年11月17日
更新日:2018年11月21日
「Custom Post Type UI」を使って作成したカスタム投稿を検索結果に表示させます。
「Custom Post Type UI」の設定で検索結果にカスタム投稿が表示されるはずですが、現在表示結果に反映されていません。

検索結果表示用テンプレート「search.php」を確認します。
search.php
変更前
検索結果から固定ページを除外するためメインループのデータを再取得しています。
その際、条件として「’post_type’ => ‘post’,」と指定しており、投稿のみ検索結果に表示しています。
<?php get_header(); ?>
<?php
// 検索値取得
$s = $_GET['s'] ? $_GET['s'] : NULL;
// メインループ条件変更
$paged = max(1, get_query_var('paged'));
$args = array (
'paged' => $paged,
'post_status' => 'publish',
'post_type' => 'post',
's' => $s,
);
query_posts( $args );
// 検索結果の記事数
$found_posts = $wp_query->found_posts;
?>
<div class="content">
<div class="main">
<?php // 検索タイトル表示 ?>
<div class="main-loop">
<div class="inner">
<h1><?php the_search_query();?> の検索結果:<?php echo $found_posts;?>件</h1>
<?php /***** メインループ開始 *****/ ?>
<?php if (have_posts()) :?>
<?php while (have_posts()) : the_post(); ?>
<?php $id = get_the_ID(); ?>
<?php // テンプレートパーツ読み込み:一覧 ?>
<?php get_template_part('content'); ?>
<?php endwhile; ?>
<?php else: ?>
<?php // テンプレートパーツ読み込み:記事なし ?>
<?php get_template_part('content','none'); ?>
<?php endif; ?>
<?php /***** メインループ終了 *****/ ?>
<?php // ページネーション ?>
<?php if (pagination()) : ?>
<div class="pagination"><?php echo pagination(); ?></div>
<?php endif; ?>
</div><!-- /.inner -->
</div><!-- /.main-loop -->
</div><!-- /.main -->
<?php get_sidebar(); ?>
</div><!-- /.content -->
<?php
get_footer();
変更後
作成したカスタム投稿も反映されるよう条件「’post_type’ => ‘post’,」を「’post_type’ => array(‘post’, ‘post_news’),」に変更します。
<?php get_header(); ?>
<?php
// 検索値取得
$s = $_GET['s'] ? $_GET['s'] : NULL;
// メインループ条件変更
$paged = max(1, get_query_var('paged'));
$args = array (
'paged' => $paged,
'post_status' => 'publish',
'post_type' => array('post', 'post_news'),
's' => $s,
);
query_posts( $args );
// 検索結果の記事数
$found_posts = $wp_query->found_posts;
?>
<div class="content">
<div class="main">
<?php // 検索タイトル表示 ?>
<div class="main-loop">
<div class="inner">
<h1><?php the_search_query();?> の検索結果:<?php echo $found_posts;?>件</h1>
<?php /***** メインループ開始 *****/ ?>
<?php if (have_posts()) :?>
<?php while (have_posts()) : the_post(); ?>
<?php $id = get_the_ID(); ?>
<?php // テンプレートパーツ読み込み:一覧 ?>
<?php get_template_part('content'); ?>
<?php endwhile; ?>
<?php else: ?>
<?php // テンプレートパーツ読み込み:記事なし ?>
<?php get_template_part('content','none'); ?>
<?php endif; ?>
<?php /***** メインループ終了 *****/ ?>
<?php // ページネーション ?>
<?php if (pagination()) : ?>
<div class="pagination"><?php echo pagination(); ?></div>
<?php endif; ?>
</div><!-- /.inner -->
</div><!-- /.main-loop -->
</div><!-- /.main -->
<?php get_sidebar(); ?>
</div><!-- /.content -->
<?php
get_footer();
変更後、検索結果を表示するとカスタム投稿も反映しています。
同じタグのコンテンツ
同じカテゴリーのコンテンツ