カスタム投稿タイプのURIを書き換える方法は?


16

私が取り組んでいるサイトは、次の「きれいな」パーマリンク構造を使用しています。

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

しかし、カスタム投稿タイプの場合、私のクライアントは「きれいな」スラッグを避けたいです。

http://example.com/product/142

カスタム投稿タイプのスラッグの代わりに投稿IDを使用するにはどうすればよいですか?

これはWP_Rewriteを使用して可能になると思いますが、どこから始めればよいかわかりません。

回答:


33

これは、投稿IDを使用してカスタム投稿タイプのURLを書き換えるために使用するものです。URLリクエストを変換するための書き換えルールと、post_type_linkへの呼び出しに対して正しいURLを返すためのフィルターが必要です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' );
}

こんにちは@miloこれは完全に私の作品...しかし、私はいくつかは、あなたが私を導くことができますしてください変更したい
deemi-D-nadeem
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.