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 を取得するには、以下の手順を行います。
add_rewrite_tag()でカスタムタグを追加add_rewrite_rule()でリライトルールを定義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_varsにcustom_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() は、WordPress にカスタム変数を追加し、独自の URL 構造を作成するための関数です。
ただし、単独では機能せず、add_rewrite_rule() や query_vars の設定と組み合わせる必要があります。
適切に設定すれば、SEO に強いカスタム URL を作成し、より柔軟なサイト構築が可能になります。
コメント