web-dev-qa-db-ja.com

カスタムパーマリンク

カスタム型はmusicです。

/music/
/music/post-name/

また、タグのような分類法genresがあります。そのURLは以下のとおりです。

/music-genres/genre-name/

私は次のようなURLを作ろうとしています:

/music/
/music/post-name/
/music/genres/
/music/genres/genre-name/

/music-genres//music/genres/に置き換える必要があります。

最後に、次のようなURL構造を取得します。

/post-type/taxonomy/term/
/post-type/postname/

どうやってこれをするの?

3
ilovewordpress

genres構造体は/music/genres/[genre-name]なので、これは可能です。もしそれが/music/[genre-name]であれば、それは/music/[post-name]と衝突するのでそれは複雑になるでしょう。

順番を覚えておくだけでいいのです。書き換え規則は、最も具体的なものから最も具体的でないものの順に並べます。最初に投稿の種類を登録してから分類法を登録する場合は、投稿の種類の規則が最初になります。問題は、投稿タイプの規則に添付ファイルを一致させるための非常に一般的な規則が含まれていることであり、これが私たちの分類法の用語では混乱するでしょう。しかし、最初に分類法を登録してから投稿タイプを登録すればうまくいきます。

わかりにくいのは、通常、登録している分類法を使用する投稿タイプを渡すことですが、空の配列を渡して後で接続することもできます。

add_action( 'init', 'wpse13608_init' );
function wpse13608_init()
{
    register_taxonomy(
        'music-genre',
        array(),
        array(
            'rewrite' => array(
                'slug' => 'music/genre'
            ),
        )
    );
    register_post_type( 'music' );
    register_taxonomy_for_object_type( 'music-genre', 'music' );
}

これを確認して、私の Rewrite analyzer plugin を使って自分のルールで遊ぶことができます。

3
Jan Fabry

多分あなたはこの記事に関するいくつかの情報を見つけることができます: カスタム投稿タイプ、分類法、そしてパーマリンク

1
rofflox

WordPressはパーマリンク構造をあなたが望む程度にオーバーロードすることをサポートしていません。あなたはあなたの望むURLをWP_Rewriteが認識できるURLに変換するためにあなた自身の書き換え前のフィルタを書いてそれからあなた自身のスタイルにWordPress生成のリンクを変換するためにフィルタを書くことができます。

これを理解するために、一般的に "ブードゥー教"と見なされるWP_Rewrite::generate_rewrite_rulesWP::parse_requestを調べてください。

1
Andy