web-dev-qa-db-ja.com

パーマリンク構造を通して変数を渡す

/ accommodation /からアクセスできるWordPressページがあります。

できることは、URLを使用してパラメータを渡すことです。つまり、/ accommodation/value1 /に移動すると、/ accommodation /と同じページが読み込まれます。

別の言い方をすれば、ブラウザウィンドウに入力したURLを保持したまま、URLの末尾に好きなものを追加して/ accommodation /にアクセスできるようにする必要があると言うことです。

ページテンプレートには、ページに渡された値に基づいて異なる動作をするコードがいくつかあります。

クエリ文字列を使用することはできますが、「かわいいURL」を維持できるようにするために、それを避けたいと思います。

あらゆる助け/提案を本当にありがとう。

4
gbuckingham89

それを解決しました!

// Register the variables that will be used as parameters on the url
function add_my_var($public_query_vars) {
    $public_query_vars[] = 'extra_slug';
    return $public_query_vars;
}
add_filter('query_vars', 'add_my_var');

// Build the rewrite rules, for the extra parameter
function do_rewrite() {
    add_rewrite_rule('(accommodation)/[/]?([^/]*)$', 'index.php?pagename=accommodation&extra_slug=$matches[2]','top');
}
add_action('init', 'do_rewrite');

// The parameter is now accessible
get_query_var('extra_slug')
4
gbuckingham89