
wp_shortlink_header()とは?
wp_shortlink_header()
は、
記事やページの「短縮URL(Shortlink)」をHTTPレスポンスヘッダーに追加する関数
です。
WordPressでは、投稿や固定ページのURLとは別に、
短縮URL(短い形式のURL)を発行する仕組みが組み込まれています。
例:
- 通常のURL
https://example.com/2024/07/03/sample-post/
- 短縮URL(shortlink)
https://example.com/?p=123
この短縮URLをHTTPレスポンスのLink
ヘッダーに自動的に出力するのがwp_shortlink_header()
です。
どこで使われる?
主にテーマやプラグインではなく、WordPress本体が自動で呼びます。
wp_head
フックで実行されるため、通常のテーマでは特に自分で呼ぶ必要はありません。
どんなHTTPヘッダーが出る?
記事ページを開くと、レスポンスに以下のようなヘッダーが追加されます。
Link: <https://example.com/?p=123>; rel=shortlink
このヘッダーの意味
<URL>
: 短縮URLrel=shortlink
: このURLは「shortlink」であることを示す
これはクローラーやクライアントに「この記事には短縮URLが存在する」と伝えるためのメタデータです。
wp_shortlink_header()の基本的な仕組み
wp_shortlink_header()
は、内部的に以下の流れで動作します。
- 現在の投稿のshortlinkを取得
→wp_get_shortlink()
を呼びます。 - 取得したshortlinkが存在する場合、ヘッダーを出力
header( 'Link: <shortlink>; rel=shortlink', false );
wp_shortlink_header()の関数の書式
wp_shortlink_header()
- 引数なし
- 戻り値なし(
echo
もしません)
「Link: ; rel=shortlink」 をレスポンスヘッダーに送るだけです。
wp_shortlink_header()のコアでの実装場所
WordPressコアのdefault-filters.php
にて、以下のようにwp_head
フックに登録されています。
add_action( 'template_redirect', 'wp_shortlink_header', 11, 0 );
つまり、ページが表示される直前(template_redirect)で処理されます。
wp_get_shortlink()との関係
**wp_get_shortlink()
**は短縮URLを取得する関数です。
例:
echo wp_get_shortlink();
出力:
https://example.com/?p=123
wp_shortlink_header()
は内部でこの関数を呼んでURLを取得し、ヘッダーにセットします。
wp_shortlink_header()の使うメリット
- 短縮URLを自動的に宣言できる
- クローラーやAPIが短縮URLを認識できる
- ブログカードやシェア機能が短縮URLを使う際に便利
wp_shortlink_header()の注意点
テーマやプラグインで二重に呼ぶ必要はない
WordPressコアが自動でやってくれます。
shortlinkが不要な場合は無効化できる
無効化する方法
短縮URLのヘッダーを止めたい場合は、以下のコードをfunctions.php
に入れます。
remove_action('template_redirect', 'wp_shortlink_header');
これでレスポンスにLink: ...; rel=shortlink
が出なくなります。
wp_shortlink_header()の出力例
実際のHTTPレスポンスヘッダーを見てみましょう。
HTTP/2 200 OK
Date: Wed, 03 Jul 2024 12:00:00 GMT
Content-Type: text/html; charset=UTF-8
Link: <https://example.com/?p=123>; rel=shortlink
ブラウザでは表示されませんが、curlや開発者ツールのNetworkタブで確認できます。
そもそもshortlinkはどこで使われる?
WordPressの「短縮URL」はもともとTwitterなど文字数制限のあるSNS用に設計されました。
現在は外部サービス(bit.ly等)を使う方が主流ですが、WordPress標準機能でも短縮URLが使えます。
wp_shortlink_header()とHTMLタグ
短縮URLは**HTMLの<link rel="shortlink">
**としても埋め込まれます。
WordPressでは以下のように両方に対応しています。
- ヘッダーで送る(
wp_shortlink_header()
) - headタグに書く(
wp_shortlink_wp_head()
)
headタグに出す例
HTMLのhead内にこう出ます。
<link rel="shortlink" href="https://example.com/?p=123" />
これもWordPressコアで自動出力されます。
wp_shortlink_header()を自分で呼ぶ必要は?
通常は一切ありません
もしテーマの特殊な構造でtemplate_redirect
フックが発火しない場合、手動で呼びたいケースがある程度です。
例:
add_action('template_redirect', function(){
wp_shortlink_header();
});
カスタムURLにしたい場合
wp_get_shortlink()
をフィルターで上書きします。
例:短縮URLを独自パターンに変更
add_filter('pre_get_shortlink', 'custom_shortlink', 10, 4);
function custom_shortlink($shortlink, $id, $context, $allow_slugs) {
return home_url('/short/' . $id);
}
出力:
https://example.com/short/123
まとめ
wp_shortlink_header()
は短縮URLをHTTPヘッダーに出力する関数- 内部で
wp_get_shortlink()
を呼ぶ - テーマで自分で呼ぶ必要は基本ない
- 無効化は
remove_action()
で対応 - クローラー・SNSがshortlinkを認識するのに有効
ポイント
- 短縮URLが必要ならそのまま使う
- 不要なら無効化する
- カスタム短縮URLはフィルターで作る