get_search_link()

get_search_link()
目次

get_search_link()とは?

get_search_link()
指定した検索キーワードの検索結果ページURLを取得する関数
です。

例えば「WordPress」というキーワードを検索するリンクを作る場合、
次のようなURLが生成されます。

https://example.com/?s=WordPress

この関数を使うことで、テーマやプラグインで安全に検索結果ページへのリンクを生成できます。

get_search_link()の基本の書式

get_search_link( string $query = '' )

get_search_link()の引数

引数説明
$querystring検索するキーワード(省略時は現在の検索クエリ)

get_search_link()の戻り値

文字列(URL)

get_search_link()の使用例

1. 現在の検索クエリURLを取得

検索結果ページで使う場合、現在のキーワードのURLをそのまま取得できます。

$url = get_search_link();

2. 任意のキーワードURLを取得

$url = get_search_link('カスタム検索');

出力例:

https://example.com/?s=%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E6%A4%9C%E7%B4%A2

※URLエンコードされた文字列が含まれます。

パーマリンク設定とURL形式

WordPressのパーマリンク設定によってURL形式が変わります。

デフォルト設定(?s=クエリ)

https://example.com/?s=WordPress

パーマリンク有効

https://example.com/search/WordPress/

このURLを自動で正しい形式にしてくれるのがget_search_link()です。

HTMLにリンクを出力する例

<a href="<?php echo esc_url( get_search_link('WordPress') ); ?>">
  「WordPress」の検索結果
</a>

get_search_link()のよくある使い方

サイト内の人気検索リンクを表示

例:functions.phpなどでタグクラウドのようにリンクを作る

$keywords = ['WordPress', 'SEO', 'テーマ', 'プラグイン'];

echo '<ul>';
foreach ($keywords as $keyword) {
    $url = get_search_link($keyword);
    echo '<li><a href="' . esc_url($url) . '">' . esc_html($keyword) . '</a></li>';
}
echo '</ul>';

検索クエリのエスケープ

get_search_link()は内部でurlencode()が適用されるため、
日本語や記号を含んでも安全にURLを生成します。

例:

$url = get_search_link('テーマ カスタマイズ');

出力:

https://example.com/?s=%E3%83%86%E3%83%BC%E3%83%9E+%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA

フィルターフック

get_search_link()は内部で**home_url()**を利用してURLを組み立てます。

home_url()フィルター例

特定の条件でURLにパラメータを追加する場合

add_filter('home_url', function($url, $path, $orig_scheme) {
    if (strpos($url, '?s=') !== false) {
        return $url . '&ref=custom';
    }
    return $url;
}, 10, 3);

結果:

https://example.com/?s=WordPress&ref=custom

get_search_link()のよくある質問

クエリを複数指定できますか?

get_search_link()は単一キーワードのみ対応です。
複数キーワードはスペースで区切って渡します。

例:

get_search_link('WordPress テーマ');

結果:

?s=WordPress+テーマ
現在の検索結果ページで使う場合?

引数を省略すればOKです。

$url = get_search_link();
URL末尾にスラッシュは付く?

パーマリンク設定によります。

カスタムクエリを追加できる?

add_query_arg()で対応可能。

例:

$url = add_query_arg('orderby', 'date', get_search_link('WordPress'));

結果:

https://example.com/?s=WordPress&orderby=date


カスタマイズ例:人気キーワードを表示

<ul class="popular-searches">
<?php
$popular_keywords = ['WordPress', 'SEO', 'ブログ'];
foreach ($popular_keywords as $keyword) {
    printf(
        '<li><a href="%s">%s</a></li>',
        esc_url(get_search_link($keyword)),
        esc_html($keyword)
    );
}
?>
</ul>

相対URLを作りたい場合

get_search_link()はフルURLを返します。
相対URLが必要ならparse_url()を使って加工します。

例:

$full_url = get_search_link('テーマ');
$parts = wp_parse_url($full_url);
echo $parts['path'] . '?' . $parts['query'];

結果:

/search/%E3%83%86%E3%83%BC%E3%83%9E/

(パーマリンク設定による)

よくある用途まとめ

  • サイト内の「タグ的なリンク」
  • サイドバーに「よく検索されるキーワード」
  • 記事末に「関連記事を探すリンク」

セキュリティ

出力する前に必ずesc_url()を使うのが推奨です。

例:

echo '<a href="' . esc_url(get_search_link('WordPress')) . '">検索</a>';

関連関数

関数用途
get_search_query()現在の検索クエリを取得
the_search_query()検索クエリをエスケープして出力
home_url()ホームURL取得
add_query_arg()クエリを追加

get_search_link()のまとめ

  • get_search_link()は検索結果URLを取得する関数
  • 引数にキーワードを指定
  • パーマリンク設定に応じてURLを自動調整
  • esc_url()で必ずエスケープ
  • カスタムパラメータはadd_query_arg()で対応

ポイント

  • 検索結果リンクを正確に作る
  • 日本語クエリも自動エンコード
  • home_url()と組み合わせて拡張
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次