システムで動的にページを表示させるときに「ページ/?●●=××&●●●=×××」というパラメータ付きの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']));