2017-08-30 20 views
1

現在、私はいくつかの書き換えルールを含む小さなWP-Pluginに取り組んでいます。テストの目的のために私はセットアップ以下の機能を持っている:私は、プラグインを有効にしlocalhost/manufacturer/audiを入力するとWordpressプラグインに書き換えルールを追加する

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

function add_manufacturer_rewrite_rule() { 
    add_rewrite_tag('%manufacturer%', '([^&]+)'); 
    add_rewrite_rule(
    '^manufacturer/([^/]*)/?', 
    'index.php?manufacturer=$matches[1]', 
    'top' 
); 
} 
add_action('init', 'add_manufacturer_rewrite_rule'); 

私は次のようにリダイレクトすることを期待:localhost/index.php?manufacturer=audi。代わりに、同じページにとどまります。私はここで何が欠けていますか?

+0

パーマリンクに**「投稿名」の設定**を使用していないこと、および書き換えルールを消去するためにコードが変更されてから保存したことを確認してください。 – FluffyKitten

答えて

0

documentationから:

重要:ルールを変更した後、書き換えルールデータベースをフラッシュし、再生成することを忘れないでください。 WordPressの管理画面で、[設定] - > [固定リンク]を選択し、変更を保存せずに変更を保存します。

flush_rewrite_rulesを試してみることができます。

書き換えルールをフラッシュするのは高価な操作ですが、 'init'フックで実行することを推奨するチュートリアルとサンプルがあります。これは悪い習慣です。これは、 'shutdown'フック、またはプラグイン/テーマ(de)のアクティブ化のいずれかで実行する必要があります。

だから、起動と停止をプラグインでそれをフラッシュする機能register_activation_hookregister_desactivation_hookを使用することができます。

0

いいえ、リダイレクトされません。これはリダイレクトルールであり、リダイレクトルールではありません。 WordpressはあなたのURLから一致した正規表現を取り、それを内部的に 'manufacturer'クエリvarに書き換えます。そして、あなたはget_query_var()であなたのスクリプトに「製造業者」の価値を公開することができます。

関連する問題