MENU

add_rewrite_tag()

add_rewrite_tag() は、WordPress の URL 構造にカスタム変数(リライトルール)を追加する関数です。

例えば、URL に example.com/custom/123/ のような独自のパラメータを含めたい場合に利用します。

カスタムリライトルールと組み合わせることで、クエリ変数を使ったカスタムページの作成が可能になります。本関数を利用することで、URL の構造を柔軟に変更し、SEO に配慮したカスタムリンクを作成できます。

目次

機能の説明

add_rewrite_tag() は、カスタム URL のパラメータを WordPress に認識させるための関数です。
通常のパーマリンク構造では扱えないカスタムクエリ変数を使用するために必要になります。

主な用途

  • カスタムクエリ変数を作成する
  • 独自の URL パターンを定義する
  • カスタム投稿タイプやタクソノミーと組み合わせて、柔軟な URL 構造を作成する

シンプルなコード例

function custom_add_rewrite_tag() {
    add_rewrite_tag('%custom_id%', '([0-9]+)');
}
add_action('init', 'custom_add_rewrite_tag');
  • %custom_id%:URL に追加するカスタムタグ
  • '([0-9]+)':カスタムタグが受け付ける値の正規表現(ここでは数値のみ)

このコードを実行すると、WordPress は %custom_id% というタグを認識し、example.com/custom/123/ のような URL を処理できるようになります。

使い方の説明

基本的な使い方

例えば、example.com/custom/123/ という URL で 123 を取得するには、以下の手順を行います。

  1. add_rewrite_tag() でカスタムタグを追加
  2. add_rewrite_rule() でリライトルールを定義
  3. query_vars に追加して取得できるようにする
function custom_rewrite_setup() {
    add_rewrite_tag('%custom_id%', '([0-9]+)');
    add_rewrite_rule('custom/([0-9]+)/?$', 'index.php?custom_id=$matches[1]', 'top');
}
add_action('init', 'custom_rewrite_setup');

function custom_query_vars($vars) {
    $vars[] = 'custom_id';
    return $vars;
}
add_filter('query_vars', 'custom_query_vars');
  • add_rewrite_rule()custom/123/ の形式を index.php?custom_id=123 に変換
  • query_varscustom_id を追加し、WordPress がクエリ変数として認識できるようにする

カスタムテンプレートで値を取得する

if (get_query_var('custom_id')) {
    echo 'カスタムID: ' . get_query_var('custom_id');
}

ポイント

get_query_var('custom_id')custom/123/123 を取得可能

一緒に使うことが多い関連タグ

add_rewrite_rule()

リライトルールを追加する関数。

add_rewrite_rule('custom/([0-9]+)/?$', 'index.php?custom_id=$matches[1]', 'top');
  • 'custom/([0-9]+)/?$':URL の形式
  • 'index.php?custom_id=$matches[1]':内部的に処理するクエリ

query_vars フィルター

カスタム変数を取得できるようにする。

function add_custom_query_vars($vars) {
    $vars[] = 'custom_id';
    return $vars;
}
add_filter('query_vars', 'add_custom_query_vars');

ポイント

add_rewrite_tag() だけでは $_GET['custom_id'] のように取得できないため、query_vars に追加する。

追加情報で取得したい場合

現在の URL からカスタム変数を取得

global $wp_query;
if (isset($wp_query->query_vars['custom_id'])) {
    echo 'カスタムID: ' . $wp_query->query_vars['custom_id'];
}

想定されるトラブル

パーマリンク設定を変更しても反映されない

解決方法

  • functions.php にコードを追加した後、管理画面の「パーマリンク設定」ページで「変更を保存」ボタンを押す(これによりリライトルールが更新される)。
  • flush_rewrite_rules();init で実行してリライトルールを再生成する。
function custom_flush_rewrite_rules() {
    flush_rewrite_rules();
}
add_action('init', 'custom_flush_rewrite_rules');

Q&A

add_rewrite_tag() だけで URL を変更できますか?

いいえ、add_rewrite_tag() はカスタム変数を定義するだけです。実際に URL をリライトするには add_rewrite_rule() も必要です。

query_vars に追加するのはなぜですか?

add_rewrite_tag() だけでは $_GET で取得できません。WordPress がクエリ変数として認識するために query_vars に追加する必要があります。

クエリ変数を $_GET で取得できますか?

get_query_var('custom_id') で取得するのが推奨されますが、index.php?custom_id=123 のような URL なら $_GET['custom_id'] でも取得できます。

まとめ

add_rewrite_tag() は、WordPress にカスタム変数を追加し、独自の URL 構造を作成するための関数です。

ただし、単独では機能せず、add_rewrite_rule()query_vars の設定と組み合わせる必要があります。

適切に設定すれば、SEO に強いカスタム URL を作成し、より柔軟なサイト構築が可能になります。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次