Wordpress を使用しているため、.htaccess や mod_rewrite で何もする必要はありません。Wordpress には、書き換えルールを処理するためのシステムが組み込まれています。関数内で URL パラメーターを設定することもできます。関数はadd_rewrite_rule()
あり、コーデックスの例はかなり良いです。ただし、手順を追って説明しますので、何が起こっているかを正確に確認できます。
例から次の書き換えルールを取得します。
add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?','index.php?page_id=12&food=$matches[1]&variety=$matches[2]','top');
まず、関数の引数について説明します。最初の引数は、書き換えの正規表現です。この正規表現が現在の URL で一致を見つけた場合、書き換えが開始されます。任意の URL パラメーターが配列に読み込まれ、$matches
後で関数の 2 番目の引数で使用されます。
2 番目の引数は、書き換えられる実際の URL です。ここでは、ページ スラッグではなく、page_id が使用されていることに注意してください。スラッグ自体は書き換えられるため、スラッグではなく、このパラメーターにページ ID を使用することが重要です。後者のパラメーターは、ハンドラーに渡すクエリ文字列の値です。
ご存知かもしれませんが、Wordpress のすべてのページは index.php ファイルを介してルーティングされます。MVC に精通している場合、これはフロント コントローラーによく似ています。そのため、すべての書き換えには最初に index.php ファイルを含める必要があります。これは、この関数の 2 番目の引数に反映されます。他のファイルを使用してカスタムの書き換えを行うこともできますが、簡単にするために、標準の Wordpress の index.php ファイルを使用していると仮定しましょう。
最後の引数は、リライトを配置するキュー内の位置です。「上」または「下」のいずれかを使用できます。上がWordpressのリライト前、下がロード後。
この関数を使用すると、Wordpress はオンザフライで htaccess に行を追加し、現在のページに基づいて更新します。これは間違いなく、Wordpress で書き換えを行う最良の方法です! お役に立てれば!
コメントに基づく更新
このコードを functions.php ファイルに配置します。関数でラップし、書き換えルールの前に起動するアクションにフックする必要があります。正確な問題に一致する例を次に示します。
add_action('init', 'my_custom_rewrite_function');
function my_custom_rewrite_function() {
$director_category_id = 5; // Change to correct id
$project_category_id = 6; // Change to correct id
$handler_page_id = 25 // The page ID for the handler
add_rewrite_rule('^director/([^/]*)/([^/]*)/?','index.php?page_id=$handler_page_id&category=$director_category_id&name=$matches[1]&path=$matches[2]','top');
add_rewrite_rule('^project/([^/]*)/([^/]*)/?','index.php?page_id=$handler_page_id&category=$project_category_id&name=$matches[1]&path=$matches[2]','top');
flush_rewrite_rules(); // This will make sure that the rewrite rules are added
}
get_query_var()
その後、クエリ文字列引数ごとに for を実行することで、カスタム テンプレートでクエリを処理できます。