パーマリンク:カスタム投稿タイプ->カスタム分類->投稿


39

WordPressの書き換えルールの使用に問題があり、いくつかのヘルプを使用できます。

というカスタム投稿タイプがあり_shows_ます。

すべてのショーには単一のカスタム分類カテゴリ_show-category_.A _show_があり、複数のカテゴリはありません_show-category_

この方法でURLをルーティングしたい:

www.mysite.com/shows/  =>  archive-shows.php

www.mysite.com/shows/%category%/ => taxonomy-show-category.php

www.mysite.com/shows/%category%/%postname%/ => single-shows.php

実際の例として、_show-category_「Foo」と「Foo」を含む_show_「Bar」というタイトルの投稿があるとし_show-category_ます。WordPressアプリは次のようになります。

www.mysite.com/shows/foo/ => shows all posts under the foo category
www.mysite.com/shows/foo/bar => shows the indivual post

私は可能な限りプラグインを避けようとしますが、あらゆる解決策を受け入れています。


1
ちょうど..私は前にしなければならなかった何かにあなたを指してwordpress.stackexchange.com/questions/102246/...を
reikyoushin

回答:


70

最初に、分類法登録しslug引数をrewriteに設定しますshows

register_taxonomy(
    'show_category',
    'show',
    array(
        'rewrite' => array( 'slug' => 'shows', 'with_front' => false ),
        // your other args...
    )
);

次に、投稿タイプ登録し、スラッグをshows/%show_category%に設定し、has_archive引数をshows次のように設定します。

register_post_type(
    'show',
    array(
        'rewrite' => array( 'slug' => 'shows/%show_category%', 'with_front' => false ),
        'has_archive' => 'shows',
        // your other args...
    )
);

最後に、フィルターを追加してpost_type_link、個々のショーパーマリンクのショーカテゴリを置き換えます。

function wpa_show_permalinks( $post_link, $post ){
    if ( is_object( $post ) && $post->post_type == 'show' ){
        $terms = wp_get_object_terms( $post->ID, 'show_category' );
        if( $terms ){
            return str_replace( '%show_category%' , $terms[0]->slug , $post_link );
        }
    }
    return $post_link;
}
add_filter( 'post_type_link', 'wpa_show_permalinks', 1, 2 );

編集

上記のhas_archive引数を忘れた場合はregister_post_type、に設定する必要がありますshows


1
ミロ、ありがとう!post_type_linkフィルターは私にとって欠けていたものでした。同じスレッドでこのスレッドを読んでいる人は誰でも、wpa_show_permalinks関数に小さな間違いがあることに注意してください。$ post-> post_type == 'show'は実際には 'shows'でなければなりません。再びミロに感謝します!
ポールT

4
既存のWordPressインスタンスを変更する場合は、[設定]> [パーマリンク]に移動して[保存]をクリックしてください。functions.phpで行った変更は、実行するまで有効になりません。
ジェイニーリー

2
分類は投稿タイプページに表示され、/ post_type / taxonomy /は正当なページ(以前は404)でしたが、私の/ post_type / taxonomy / postは404'ingです。show_categoryのみが分類法であるにもかかわらず、「show_category」と「show」の両方の上に分類法を登録するときに気付きました。分類のみを登録しています。
justinavery

4
@Miloこれをshows / tax / subtax / postのようなサブサブ税で動作させる方法はありますか?
ベン

2
私はこれは同様に私のために働くだろう望んだが、404内のすべての特異両端....
Beee
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.