2016-08-05 16 views
0

私のURLに "info"を付けて、?category = [name]のすべてのインスタンスを変更しようとしています。だから、基本的に我々はwww.example.com/bill/?category=test持っている場合ワードプレス.htaccess書き換えルール

RewriteRule ^info$ ?category=$1 [NC,L] 

:私の.htaccessでは、私が(BEGINワードプレスとENDのWordPresコメント内)のインデックスについてのRewriteRuleした後にこれを入れてみました代わりにwww.example.com/bill/infoにするか、それ以上のものを置き換えるだけでよいでしょう。つまり、www.example.com/billです。どちらの方法でも動作します。

私はそのカテゴリの変数を取得する必要があります。これによってエラーが発生する場合は、PHPでcategory変数を取得できる限り、www.example.com/bill/testのようなものを使用できます。

答えて

1

残念ながら、.htaccessファイルは、WordPressの変数としてこの作業を行いたいとは思いません。しかし、ワードプレスの書き換えシステム(他のものの中でもパーマリンクを扱うもの)があります。これにより、https://www.example.com/bill/testのようなURLを使用し、変数に "test"を割り当てることができます。

私はまた、それはあなたが何が起こっているかをよりよく理解するのに役立ちますし、あなたの機能が影響を受けていることを確認するよう書き換えルールインスペクタプラグイン(https://wordpress.org/support/view/plugin-reviews/rewrite-rules-inspector)を追加することをお勧めします。

まず、新しいクエリ変数を登録する必要があります。複数を追加することができます。彼らは/bill/<billCategory>/<billSomething>のようにURLに追加するだけです。競合する可能性のある名前から離れていることを確認する必要があります。残念ながら、これらは十分に文書化されていません。

function add_bill_arguments($public_query_vars) 
{ 
    $public_query_vars[] = 'billCategory'; 
    return $public_query_vars; 
} 

add_filter('query_vars', 'add_bill_arguments'); 

次に、書き換えルールを追加する必要があります。これはWordPressに "stop"を/bill/で並べ替え、それに続くすべてをあなたが設定したクエリー値に割り当てます。あなたのリライト(複数可)を追加したら今

function bill_rewrite() 
{ 
    add_rewrite_rule('^bill/([^/]*)/?', 'index.php?pagename=bill&billCategory=$matches[1]', 'top'); 
} 

add_action('init', 'bill_rewrite'); 

あなたの場所でそれらを持っていることを、あなたは...そうのようなあなたの変数に

global $wp_query; 

if(is_page('bill')) 
{ 
    if (isset($wp_query->query_vars['billCategory'])) 
     $billCategory = $wp_query->query_vars['billCategory']; 

    echo $billCategory; 
} 

を得ることができ、あなたはリライトをフラッシュする必要がありますルールそれを行う最も簡単な方法は、管理者に行き、設定 - > Permalinksにアクセスすることです。次に、[保存]ボタンをクリックします。ページがリロードされたら、もう一度やり直してください。一度しばらくすると、書き換えが滞ってしまいます。上記のプラグインをインストールした場合は、プラグインがあることを確認することができます。

うまくいけば、あなたが正しい方向に着手するのに役立ちます。

+0

このような詳細な回答を残すために時間をとってくれてありがとう!私はadd_rewrite_ruleに関するあなたの2番目のコードの宣言を理解していません。なぜあなたはindex.phpを指定していますか?私のURLにindex.phpはありません。また、この変数を使用しているページが実際にカスタムの.phpテンプレートを使用しているため、ページネーム変数が必要ではないとも思われます。 –

+0

WordPressのすべてが /index.phpを通過します。それがリダイレクトで指定されている理由です。まだ他のすべてのWPをロードしたい場合は、この方法で作業する必要があります。また、レイアウトからコードを分離する必要があります。そのような機能をテンプレートに入れている場合、テンプレートを切り替えたり、機能を使用したりすることはできません。 'shortcode'やテンプレートオーバーライドを使ってコードを実行することを検討してください。 –

関連する問題