パラメータ付きのURLを読みやすいディレクトリ形式のURLへ変換

1Reading Time

システムで動的にページを表示させるときに「ページ/?●●=××&●●●=×××」というパラメータ付きのURLから「ぺージ/●●●/×××/」といった見やすいURLに変換する方法。

ワードプレスの「add_rewrite_tag()」と「add_rewrite_rule()」を使う。

1.「add_rewrite_tag()」の追加

function.phpにadd_rewrite_tag()関数を使い、WordPressにカスタムクエリ文字列変数を認識させます。カスタムクエリ文字列変数は「ページ/?●●=××&●●●=×××」でいうところの「●●」や「●●●」です。

function custom_rewrite_tag() {
	add_rewrite_tag('%career%', '([^&]+)');
	add_rewrite_tag('%maker%', '([^&]+)');
	add_rewrite_tag('%model%', '([^&]+)');
  }
add_action('init', 'custom_rewrite_tag', 10, 0);

2.「add_rewrite_rule()」の追加

上記add_rewrite_tag()で追加した文字列変数を使い、どのようにURLに変換するかを記述します。

function custom_rewrite_rule() {
    add_rewrite_rule('^list/([^/]*)/([^/]*)/([^/]*)/?','index.php? 
    page_id=xxxx&career=$matches[1]&maker=$matches[2]&model=$matches[3]','top');
}
add_action('init', 'amemoba_rewrite_rule', 10, 0);

「page_id=xxxx」はリライトするページのページidを入力します。
上記の例では、もともとのURL「xxx.com/list/?career=xxx&maker=yyy&model=zzz」を「xxx.com/list/xxx/yyy/zzz/」に変換しています。

※上記を変更した場合は、「設定」メニューの「パーマリンク」の「保存」を実行する必要がある。

値の受け渡し

リンク先で各パラメータの値を受けとるには以下のように記載します。

//渡す
echo '<a href="' . home_url() . '/testpage/' .  rawurlencode($value['pl_career']) . '/' . rawurlencode($value['pl_maker']) . '/' . rawurlencode($value['pl_url']) . '/">';
//受ける
$search_career = rawurldecode(esc_html($wp_query->query_vars['career']));

参考URL

Rewrite API/add rewrite rule
WordPress パーマリンク リライトルール