web-dev-qa-db-ja.com

階層的分類URLに親用語を含む方法

すべてのカスタム分類法では、URLは /base/slug/ のようになります。

階層分類法には、 /base/parentlug/childslug/ という解決策が必要です。

誰がどのようにリダイレクトするか、またはカテゴリのように同じ機能を持つかを知っていますか?

2
Traveler

明確にすると、カスタム分類基準登録コードの実用的な例でParstが指摘したことは次のとおりです。

$labels = array(
        'name'              => _x( 'Issue numbers', 'taxonomy general name', 'sascha_setup_post_type' ),
        'singular_name'     => _x( 'Issue number', 'taxonomy singular name', 'sascha_setup_post_type' ),
        'search_items'      => __( 'Search issues', 'sascha_setup_post_type' ),
        'all_items'         => __( 'All issue numbers', 'sascha_setup_post_type' ),
        'parent_item'       => __( 'Year of publication', 'sascha_setup_post_type' ),
        'parent_item_colon' => __( 'Year of publication:', 'sascha_setup_post_type' ),
        'edit_item'         => __( 'Edit issue number', 'sascha_setup_post_type' ),
        'update_item'       => __( 'Update issue number', 'sascha_setup_post_type' ),
        'add_new_item'      => __( 'Add new issue number', 'sascha_setup_post_type' ),
        'new_item_name'     => __( 'New issue number', 'sascha_setup_post_type' ),
        'menu_name'         => __( 'Issue numbers', 'sascha_setup_post_type' ),
    );

    $args = array(
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'issues', 'hierarchical' => true ),
    );

    register_taxonomy( 'issue_number', array( 'post', 'issue' ), $args );

結果はwww.yourdomain.com/issues/2016/04/のようなURLになります。そして!カスタム分類URLの404を取得するのではなく、これを実装した後にパーマリンクルールをフラッシュすることを忘れないでください。最も簡単な方法 - Admin/Permalinksに行き、何も変更せずに「保存」ボタンを押すだけです。

register_taxonomy() ドキュメントによると、それを制御するrewrite/hierarchical設定があります。デフォルトはfalseです。これがネイティブ分類法と同じように振る舞わないと思われる理由です。

2
Rarst