it-swarm.com.de

Wie schreibe ich URL WordPress?

ich mache WordPress Posts Filter. Als Ergebnis der Antragsformulare erhalten diese 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

So schreiben Sie die URL um:

local/rieltplus/category/catalog/TYPE & price_min = 1000 & price_max = 2000 & area_min = 5 & area_max = 50 & room_num = 5 & etage = 2 & plan = old

Das heißt, TYPE = ruft den GET-Parametertyp ab, und die anderen Parameter bleiben unverändert. Bitte helfen Sie mir ... Ich weiß nicht, wie es geht ...

1
Igor Fedorov

Sie sollten add_rewrite_rule() in init einbinden

Angenommen, http://local/rieltplus/ ist Ihre Homepage und category/catalog/ ist ein Kategoriearchiv, dann sollte dies funktionieren:

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'
    );
});

Wenn Sie dies einer Kategorie zur Verfügung stellen möchten, erwähnen Sie es in den Kommentaren.

local/rieltplus/category/catalog/TYPE&price_min ist im Gegensatz zu local/rieltplus/category/catalog/TYPE?price_min oder local/rieltplus/category/catalog/TYPE/?price_min keine gültige URL.

Um die Variable type zu erhalten, verwenden Sie get_query_var( 'type' ), fügen Sie sie jedoch zuerst der Hauptabfrage hinzu:

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

Sie sollten die Permalink-Struktur leeren, indem Sie Ihre Permalink-Struktur im Bildschirm settings > permalinks speichern oder flush_rewrite_rules() ONCE ONCE verwenden.

Bearbeiten - Gemäß Ihrer anderen Frage in den Kommentaren

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;
        }
    }
});
1
Samuel Elh