web-dev-qa-db-ja.com

add_rewrite_ruleが動作しません

以下の書き換えタグを定義しています。

// ADD REWRITE TAG FOR 'VEHICLE MAKES'
add_rewrite_tag('%make%','([^&]+)');

// ADD REWRITE TAG FOR 'BODY STYLES'
add_rewrite_tag('%body-style%','([^&]+)');

// ADD REWRITE TAG FOR 'OTHER TOPICS'
add_rewrite_tag('%topic%','([^&]+)');

私は、変数が存在するどのページにも適用できるように、これらそれぞれのカスタム書き換えを作成しようとしています。

私は幸運にもなしにドキュメントのWPの例を作り直してきました..この書き換えは 'Vehicle Makes'のためのものです。

私はWPが以下を解釈することを目指しています:

http://example.com/make/abc

として

http://example.com?make=abc

と同じパターン

http://example.com?body-style=abchttp://example.com?topic=abc

いくら試しても、次のようには動作しないようです。

add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?','index.php?page_id=12&food=$matches[1]&variety=$matches[2]','top');

ありとあらゆる支援は大歓迎です!

1
Austin Biggs

その呼び出しに3番目のパラメーターを追加してみましたか?

add_rewrite_tag( '%make%', '([^/]+)', 'make=' );

2
Otto

add_rewrite_rule関数の使い方は以下の通りです。

  1. この関数をinitフックにフックします
  2. query_varsフィルタを使用して、新しい書き換えをquery_varsで利用できるようにします。

これがコードスニペットです

add_action('init', 'my_custom_rewrite_rule');
function my_custom_rewrite_rule() {
    add_rewrite_rule( 'make/([^/]+)/?$', 'index.php?make=$matches[1]', 'top' );
}

add_filter('query_vars', 'my_rewrite_query_var');
function my_rewrite_query_var( $vars ) {
    $vars[] = 'make';
    return $vars;
}

それでは、permalink settingsページに行き、Save Changesをクリックして書き換えルールをフラッシュしてください。

0
Saikat

ここで質問をする前に、自分でそれを見つけてみてください。ワードプレスの場合は、まず http://codex.wordpress.org/ をご覧ください。

答えのほとんどはすでに利用可能です。

探しているコードは、関数flush_rewrite_rules()です。

参照: 書き換え規則

0
Nishant Kumar