私はWordPressの投稿フィルタをしています。申請書の結果、次のURLが得られました。
http://local/rieltplus/category/catalog/?type=flat&price_min=1000&price_max=2000&area_min=5&area_max=50&room_num=5&etage=2&plan=old
このようにURLを書き換える方法:
local/rieltplus/category/catalog /TYPE&price_min = 1000&price_max = 2000&area_min = 5&area_max = 50&room_num = 5&plan = 2
つまり、TYPE= GETパラメータの型を取得し、それ以外のパラメータは変更されません。私を助けてください...私はそれをする方法がわからない...
あなたは add_rewrite_rule()
をinit
にフックすべきです
http://local/rieltplus/
があなたのホームページで、category/catalog/
がカテゴリアーカイブであると仮定すると、これはうまくいくはずです。
add_action('init', function() {
add_rewrite_rule(
'category/catalog/([^/]+)?$',
'index.php?category_name=catalog&type=$matches[1]&price_min=1000&price_max=2000&area_min=5&area_max=50&room_num=5&etage=2&plan=old',
'top'
);
});
あなたがそれをどんなカテゴリーでも利用可能にしたいならば、それをコメントでそれに言及してください。
ちなみにlocal/rieltplus/category/catalog/TYPE&price_min
やlocal/rieltplus/category/catalog/TYPE?price_min
とは異なり、local/rieltplus/category/catalog/TYPE/?price_min
は有効なURLではありません。
type
変数を取得するには、get_query_var( 'type' )
を使用しますが、最初にそれをメインクエリに追加します。
add_filter('query_vars', function($vars) {
$vars[] = "type";
return $vars;
});
パーマリンク構造をフラッシュするには、パーマリンク構造をsettings > permalinks
画面に保存するか、またはflush_rewrite_rules()
のみを使用してください。
編集 - の他の質問と同じようにコメント
add_action('wp', function() { // this will work as long as GET type is the first is the query string
if( "catalog" === get_query_var( "category_name" ) && isset( $_GET["type"] ) ) {
if( ! empty( $_GET["type"] ) ) {
$type = strval( $_GET["type"] );
$url = $_SERVER["REQUEST_URI"];
$url = str_replace( array( "?type={$type}&", "?type={$type}" ), "{$type}?", $url );
$url = str_replace( "?&", '?', $url );
wp_redirect( $url );
exit;
}
}
});