Come riscrivere l'URI di un tipo di post personalizzato?

12 nov 2011, 02:13:52
Visualizzazioni: 29.3K
Voti: 17

Il sito su cui sto lavorando utilizza la seguente struttura "gradevole" per i permalink:

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

Ma per un tipo di post personalizzato il mio cliente vorrebbe evitare di avere uno slug "gradevole":

http://example.com/product/142

Come si può utilizzare l'ID del post al posto dello slug per il tipo di post personalizzato?

Credo che questo possa essere possibile utilizzando WP_Rewrite, ma non so da dove iniziare.

0
Tutte le risposte alla domanda 1
1
37

Ecco ciò che utilizzo per riscrivere gli URL dei custom post type con l'ID del post. È necessaria una regola di riscrittura per tradurre le richieste degli URL, oltre a un filtro su post_type_link per restituire gli URL corretti per qualsiasi chiamata a get_post_permalink():

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' );
}
12 nov 2011 04:19:47
Commenti

Ciao @milo, questa soluzione funziona perfettamente per me... ma vorrei apportare alcune modifiche. Puoi guidarmi?

deemi-D-nadeem deemi-D-nadeem
13 mar 2015 07:45:42