wp_shortlink_header()

wp_shortlink_header()
目次

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>: 短縮URL
  • rel=shortlink: このURLは「shortlink」であることを示す

これはクローラーやクライアントに「この記事には短縮URLが存在する」と伝えるためのメタデータです。

wp_shortlink_header()の基本的な仕組み

wp_shortlink_header()は、内部的に以下の流れで動作します。

  1. 現在の投稿のshortlinkを取得
    wp_get_shortlink()を呼びます。
  2. 取得した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はフィルターで作る
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次