Wie schreibe ich einen URI eines benutzerdefinierten Beitragstyps?

16

Die Site, an der ich arbeite, verwendet die folgende "hübsche" Permalink-Struktur:

http://example.com/blog/my-special-post

Aber für einen benutzerdefinierten Beitragstyp möchte mein Client vermeiden, dass er eine "hübsche" Schnecke hat:

http://example.com/product/142

Wie kann die Post-ID anstelle des Slugs für den benutzerdefinierten Post-Typ verwendet werden?

Ich glaube, dass dies mit WP_Rewrite möglich ist, aber ich weiß nicht, wo ich anfangen soll.

Lea Hayes
quelle

Antworten:

33

Dies ist, was ich benutze, um benutzerdefinierte URLs mit der Beitrags-ID neu zu schreiben. Sie benötigen eine Umschreiberegel, um URL-Anforderungen zu übersetzen, sowie einen Filter post_type_link, um die richtigen URLs für alle Anrufe an get_post_permalink()folgende Adressen zurückzugeben :

add_filter('post_type_link', 'wpse33551_post_type_link', 1, 3);

function wpse33551_post_type_link( $link, $post = 0 ){
    if ( $post->post_type == 'product' ){
        return home_url( 'product/' . $post->ID );
    } else {
        return $link;
    }
}

add_action( 'init', 'wpse33551_rewrites_init' );

function wpse33551_rewrites_init(){
    add_rewrite_rule(
        'product/([0-9]+)?$',
        'index.php?post_type=product&p=$matches[1]',
        'top' );
}
Milo
quelle
Hallo @milo, das funktioniert perfekt ... aber ich möchte ein paar Änderungen, bitte führen Sie mich
deemi-D-nadeem