
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()の引数
| 引数 | 型 | 説明 |
|---|---|---|
$query | string | 検索するキーワード(省略時は現在の検索クエリ) |
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=customget_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()と組み合わせて拡張