• 解決済 Leo1229

    (@leo1229)


    いろいろと検索しましたが、解決法が見当たりませんのでご教示いただければと思います。

    カスタム投稿にて、「お役立ち情報コラム」の様なものを作成しています。

    add_action( ‘init’, ‘create_post_type’ );
    function create_post_type() {
    register_post_type(‘column’,
    array(
    ‘label’ => ‘情報コラム’,
    ‘description’ => ”,
    ‘public’ => true,
    ‘show_ui’ => true,
    ‘show_in_menu’ => true,
    ‘capability_type’ => ‘post’,
    ‘hierarchical’ => false,
    ‘rewrite’ => true,
    ‘query_var’ => false,
    ‘has_archive’ => true,
    ‘exclude_from_search’ => false,
    ‘menu_position’ => 20,
    ‘supports’ => array(‘title’,’editor’,’revisions’,’thumbnail’,’custom-fields’,’page-attributes’),
    ‘taxonomies’ => array(‘column_cat’,’column_tag’),
    ‘labels’ => array (
    ‘name’ => ‘情報コラム’,
    ‘all_items’ => ‘コラム一覧’
    )
    )
    );
    register_taxonomy(
    ‘column_cat’,
    ‘column’,
    array(
    ‘hierarchical’ => true,
    ‘label’ => ‘カテゴリ’,
    ‘show_ui’ => true,
    ‘query_var’ => true,
    ‘rewrite’ => array(‘slug’ => ‘column’),
    ‘singular_label’ => ‘カテゴリ’
    )
    );

    register_taxonomy(
    ‘column_tag’,
    ‘column’,
    array(
    ‘hierarchical’ => false,
    ‘label’ => ‘タグ’,
    ‘show_ui’ => true,
    ‘query_var’ => true,
    ‘rewrite’ => array(‘slug’ => ‘column’),
    ‘singular_label’ => ‘タグ’
    )
    );
    }

    function.phpに上記の様にカスタム投稿、タグ、カテゴリをカスタムタクソノミーとして定義しました。

    テーマファイル内には
    archive-column.php、taxonomy-column_tag.php、taxonomy-column_cat.php、
    single-column.phpがあります。

    アーカイブと各記事の表示はうまくいきますが、タグ別のアーカイブ、カテゴリ別のアーカイブは、どちらかがうまくいくと、もう一方が404に引っかかってしまいます。

    どちらも、www.example.com/column/ターム名/ で表示させたいのですが、
    どうすればいいのでしょうか?

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • URLのルールが同一である場合、WordPress側では、そのURLがカテゴリーなのか、タグなのかを判定することは出来ないため、先に記述された方のルールを採用します。
    このため、基本的には、カテゴリーとタグで同一のURL構造を用いることはできません。

    それでもという場合は、後に定義したタクソノミーのタームを全て洗い出し、add_rewrite_rule で優先的に定義する方法があります。
    ただし、この方法では、タームの数によって、rewrite_rules が肥大化していきますので、その点十分配慮してください。

    トピック投稿者 Leo1229

    (@leo1229)

    ご教示ありがとうございます。

    その場合、例えばタグ方のURLを
    http://www.example.com/column/tag/ターム名/
    しにてもやはり同じと見なされてしまいますでしょうか?

    通常この様にタグとカテゴリを並行して用いる場合、
    どのような形に収めるのが一般的なのでしょうか?

    ご確認お願い致します。

    その場合、例えばタグ方のURLを
    http://www.example.com/column/tag/ターム名/
    しにてもやはり同じと見なされてしまいますでしょうか?

    column_catcolumn_tag それぞれ(あるいはどちらかを)

    'rewrite' => array('slug' => 'column/cat'),
    'rewrite' => array('slug' => 'column/tag'),

    とすればだいじょうぶではないでしょうか。

    と思いましたが、カスタム投稿のスラッグと衝突しそうですね…
    私ならどちらかをcolumnsにします。

    トピック投稿者 Leo1229

    (@leo1229)

    mimosafa様

    ご回答ありがとうございます。

    column_cat、column_tag それぞれ(あるいはどちらかを)

    'rewrite' => array('slug' => 'column/cat'),
    'rewrite' => array('slug' => 'column/tag'),

    とすればだいじょうぶではないでしょうか。

    私も上記試してみましたが、やはり衝突してしまう様でした。

    私ならどちらかをcolumnsにします

    上記のご提案か、別の方法で対応したいと思います。

    本当にありがとうございました。
    とても勉強になりました。
    解決済みにしておきます。

    トピック投稿者 Leo1229

    (@leo1229)

    jim912様
    mimosafa様

    ご回答ありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「カスタムタクソノミーについて」には新たに返信することはできません。