web-dev-qa-db-ger.com

Ändern Sie die Abfragezeichenfolge in einen hübschen Permalink

Ich habe einen Link http://www.example.com/my-account/view-pet/?pet-page=2

Ich möchte es entweder ändern

Folgendes habe ich bisher versucht

function wpse12065_init() {
    add_rewrite_rule('view-pet(/([^/]+))?(/([^/]+))?/?',
        'index.php?pagename=my-account/view-pet&pet-page=$matches[2]',
        'top');
}
add_action( 'init', array( $this, 'wpse12065_init' ) );

Ich kann den ?pet-page=2 mit get_query_var( 'pet-page' ) erhalten

Ich habe auch das THIS durchgesehen und es funktioniert immer noch nicht

Jede Hilfe wäre sehr dankbar

2
bagpipper

Probieren Sie diese Umschreiberegel in Ihrem functions.php aus.

function string_url_rewrite() {
    global $wp_rewrite;
    add_rewrite_tag('%pet-page%', '([^&]+)');
    //In the rewrite rule you need to enter page slug and page id
    add_rewrite_rule('^Enter_Page_slug/([0-9]+)/?', 'index.php?page_id=Enter_Page_ID&pet-page=$matches[1]', 'top');

    $wp_rewrite->flush_rules(true);
}
add_action('init', 'string_url_rewrite', 10, 0);

Jetzt müssen Sie auch das Farmat der URL in anchor tag ändern. Zum Beispiel Ihre vorherige URL

http://www.example.com/my-account/view-pet/?pet-page=2

Ändere diese URL in diese

http://www.example.com/my-account/view-pet/2

Verwenden Sie die folgende Methode, um den Wert von pet-page abzurufen

//Storing the value of 'pet-page' in variable
$value = get_query_var( 'pet-page' );
if($value){  //checking if variable has any value or not
    echo 'This is the value '.$value;
} else {
    echo 'No Values';
}   

Hinweis: Wenn dies nicht funktioniert, spülen Sie Ihren Permalink. Gehen Sie dazu zu sentting -> permalink und speichern Sie die Änderungen.

2
Rishabh