
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=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()
と組み合わせて拡張