私は非常に独特な要求を持っています、うまくいけば、私は混乱し過ぎずにそれを説明することができます。外部XMLファイルから取得したいくつかのプロパティをリストしたページテンプレートを作成しました。これまでのところ問題はありません。URLは次のようになっているとしましょう。
http://www.example.com/properties/
各プロパティには、それに関する詳細情報を表示する「単一プロパティ」ページにユーザーをリダイレクトする必要があるリンクがあります。私はこのようなリンクを作る方法があるかどうか疑問に思いました:
http://www.example.com/properties/123
123
はプロパティのIDです。 properties/some_id
のようなURLを持っているのであれば(single.php
やpage.php
ファイルのような)ビューファイルをロードできるようにしたいのですが、このURL条件に固有のものです。
これは可能ですか?
これをあなたのテーマのfunctions.phpに追加するか、 プラグインに入れてください 。
add_action( 'init', 'wpse26388_rewrites_init' );
function wpse26388_rewrites_init(){
add_rewrite_rule(
'properties/([0-9]+)/?$',
'index.php?pagename=properties&property_id=$matches[1]',
'top' );
}
add_filter( 'query_vars', 'wpse26388_query_vars' );
function wpse26388_query_vars( $query_vars ){
$query_vars[] = 'property_id';
return $query_vars;
}
これは、クエリ変数/properties/
を設定して、ページ名properties
に続く数字の任意の組み合わせで、property_id
へのリクエストを指示する書き換え規則を追加します。パーマリンク設定ページにアクセスして書き換えルールをフラッシュして保存するようにしてください。そうすれば、この新しいルールが含まれます。
page-properties.php
テンプレートでは、get_query_var('property_id')
はプロパティIDが設定されていればそれを返し、そうでなければデフォルトのプロパティページを表示します。
それを行う別の方法:
add_action('init', function() {
add_rewrite_rule( '^properties/([0-9]+)/?',
'index.php?pagename=properties&property_id=$matches[1]',
'top' );
}, 10, 0);
add_action('init', function() {
add_rewrite_tag( '%property_id%', '([^&]+)' );
}, 10, 0);