2022.5.8|WordPress

WordPress(ワードプレス)で「サイト内検索」の検索結果から固定ページを除外する実装方法

WordPress(ワードプレス)で「サイト内検索」の検索結果から固定ページを除外する実装方法

WordPress(ワードプレス)で、「サイト内検索」の機能を使って検索を行った場合、検索結果には投稿ページ、固定ページの全ての記事から算出されます。投稿ページで記事を書いていてのに検索結果に固定ページを表示したくない場合もあります。
WordPress(ワードプレス)で、「サイト内検索」の検索される結果から固定ページを除外する方法がいくつかあります。

今回は、WordPress(ワードプレス)で「サイト内検索」の検索結果から固定ページを除外する実装方法を解説します。

「サイト内検索」の検索結果から固定ページを除外する実装方法

「サイト内検索」の検索結果から固定ページを除外する場合は、「query_posts」を使って検索結果に投稿ページのみ出力する方法、「input type=”hidden”」を使って検索フォームに記述する方法、「functions.php」ファイルにコードを記述する方法の3つの方法があります。

【3つの方法】
・「query_posts」を使う方法
・「input type=”hidden”」を使う方法
・「functions.php」を使う方法

「query_posts」を使う方法

「query_posts」を使って「サイト内検索」の検索結果から固定ページを除外する場合は、検索結果ページ(search.php)の検索結果を出力するコードの前に「query_posts」を記述することで投稿一覧のみを表示させることができます。
WordPressの「テーマ」ファイルから「search.php」ファイルを探します。
「search.php」ファイルを開き、検索結果を出力するコードの前に投稿記事のみを指定するコードを記述することで実装ができます。

通常の検索結果コード
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php endwhile; ?>
<?php endif; ?>
「query_posts」を記述した検索結果コード

※「post_type=post」で投稿記事を指定します。

<?php // 検索結果から固定ページを除外
	global $query_string;
	query_posts($query_string . "&post_type=post");
?>

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php endwhile; ?>
<?php endif; ?>

<?php wp_reset_query(); ?>

「input type=”hidden”」を使う方法

「input type=”hidden”」を使って「サイト内検索」の検索結果から固定ページを除外する場合は、検索フォームの中に「input type=”hidden”」の要素を記述することで検索から固定ページを除外して検索結果に出力されます。
WordPressの「テーマ」ファイルから「検索フォーム」が記述されているファイルを探します。
「検索フォーム」が記述されているファイルを開き、検索に固定ページを含めないコードを記述することで実装ができます。

通常の検索フォームコード
<form method="get" class="search_box" action="<?php echo esc_url( home_url('/') ); ?>">
<input type="text" placeholder="キーワード検索" name="s" class="searchfield" value="" />
<input type="submit" value="&#xf002" alt="検索" title="検索" class="searchsubmit">
</form>
「input type=”hidden”」を記述した検索フォームコード

※「value=”post”」で投稿記事を指定します。

<form method="get" class="search_box" action="<?php echo esc_url( home_url('/') ); ?>">
<input type="hidden" name="post_type[]" value="post">
<input type="text" placeholder="キーワード検索" name="s" class="searchfield" value="" />
<input type="submit" value="&#xf002" alt="検索" title="検索" class="searchsubmit">
</form>

「functions.php」を使う方法

「functions.php」を使って「サイト内検索」の検索結果から固定ページを除外する場合は、「functions.php」ファイルに検索結果に固定ページを含めないコードを記述することで検索結果に投稿一覧のみを表示させることができます。
サーバーにインストールされたWordPressの「テーマ」ファイルから「functions.php」ファイルを探します。
「functions.php」ファイルを開き、検索結果に固定ページを含めないコードを記述することで実装ができます。

通常の検索フォームコード
<form method="get" class="search_box" action="<?php echo esc_url( home_url('/') ); ?>">
<input type="text" placeholder="キーワード検索" name="s" class="searchfield" value="" />
<input type="submit" value="&#xf002" alt="検索" title="検索" class="searchsubmit">
</form>

まとめ

通常時の検索結果の表示ですとデザイン組み込んだり、投稿ページにはカテゴリーを設定しているが、固定ページにはカテゴリーを設定していない場合は、検索結果ページでカテゴリー表示部分がエラーとして表示されてしまいます。投稿記事のみでブログや情報の公開をしている場合にはこの方法は覚えておいた方が良いですね。