サポート » 使い方全般 » カスタム投稿タイプのリライトルールについて

  • 解決済 kiki222

    (@kiki222)


    カスタム投稿タイプを使用して、投稿を作成しようと思っております。
    使い方を紹介したページを習って下記の様にfunction.phpに追記しました。

    function new_post_type() {
    register_post_type(
    'event',//投稿タイプ名(識別子)
    array(
    'label' => 'イベント',
    'labels' => array(
    'add_new_item' => '新規イベントを追加',
    'edit_item' => 'イベントを編集',
    'view_item' => 'イベントを表示',
    'search_items' => 'イベントを検索',
    ),
    'public' => true,// 管理画面に表示しサイト上にも表示する
    'hierarchicla' => false,//コンテンツを階層構造にするかどうか(投稿記事と同様に時系列に)
    'has_archive' => true,//trueにすると投稿した記事のアーカイブページを生成
    'supports' => array(//記事編集画面に表示する項目を配列で指定することができる
    'title',//タイトル
    'editor',//本文(の編集機能)
    'thumbnail',//アイキャッチ画像
    'custom-fields',
    'excerpt'//抜粋
    ),
    'menu_position' => 5//「投稿」の下に追加
    )
    );
    
    register_taxonomy(
    'event_cat',
    'event',
    array(
    'label' => 'イベントカテゴリー',
    'labels' => array(
    'popular_items' => 'よく使うイベントカテゴリー',
    'edit_item' => 'イベントカテゴリーを編集',
    'add_new_item' => '新規イベントカテゴリーを追加',
    'search_items' => 'イベントカテゴリーを検索',
    ),
    'public' => true,
    'hierarchical' => true,
    'rewrite' => array('slug' => 'event/cat') //events_cat の代わりに events/cat でアクセス(URL)
    )
    );
    
    register_taxonomy(
    'event_tag',
    'event',
    array(
    'label' => 'イベントタグ',
    'labels' => array(
    'popular_items' => 'よく使うイベントタグ',
    'edit_item' =>'イベントタグを編集',
    'add_new_item' => '新規イベントタグを追加',
    'search_items' => 'イベントタグを検索',
    ),
    'public' => true,
    'hierarchical' => false,
    'rewrite' => array('slug' => 'event/tag')
    )
    );
    
    flush_rewrite_rules();
    }
    add_action('init', 'new_post_type');
    
    //カテゴリーとタグの URL のリライトルールを設定
    add_rewrite_rule('event/cat/([^/]+)/?$', 'index.php?events_cat=$matches[1]', 'top');
    add_rewrite_rule('event/tag/([^/]+)/?$', 'index.php?events_tag=$matches[1]', 'top');

    その後、カテゴリに「music」を追加しました。
    「music」を表示させるとアドレスが
    「http://www.example.com/event/cat/music/」
    となります。
    これを
    「http://www.example.com/event/music/」
    をしたいのですが、
    ちなみにパーマリンク設定は
    「http://www.example.com/%category%/%postname%/」
    としております。
    プラグインで「Custom Permalinks」を使用しておりますが、
    カテゴリ編集ページのCustom Permalink設定部分に
    event/music/と記載しても反映されませんでした。
    宜しくお願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • function.phpにこちらを追加してみたらどうでしょうか??

    function my_custom_post_type_permalinks_set($termlink, $term, $taxonomy){
    	return str_replace('/'.$taxonomy.'/', '/', $termlink);
    }
    add_filter('term_link', 'my_custom_post_type_permalinks_set',11,3);

    register_taxonomyの引数の

    ‘rewrite’ => array(‘slug’ => ‘event/cat’)

    を、

    ‘rewrite’ => array(‘slug’ => ‘event’)

    とすれば、一応表示は可能です。

    ただし、

    http://www.example.com/event/カスタム分類のターム名

    という設定そのものが、既存の、

    http://www.example.com/event/投稿のスラッグ

    の設定と競合を起こし、404になったり、「投稿が見つかりません」と表示される事があります。

    ですので、URLを、「http://www.example.com/event/cat/カスタム分類のターム名」として設定するか、カスタム投稿側のパーマリンク設定を、post_idを使うようにして、

    add_rewrite_rule(‘event/cat/([^/]+)/?$’, ‘index.php?events_cat=$matches[1]’, ‘top’);

    の設定を、数字のみのものにはマッチしないように変える必要があります。

    トピック投稿者 kiki222

    (@kiki222)

    nogud様、
    Toro_Unit様
    お返事ありがとうございます。
    質問をしておきながら、大変申し訳ないのですが
    質問の回答を頂くまで時間があり、
    自分では解決する事が出来なかったために
    カスタム投稿をあきらめ、
    通常の投稿で対処する事にしました。
    今後、カスタム投稿を利用する事があるかと思いますので、
    その際にお二人のご意見を参考に挑戦してみたいと思います。
    貴重なお時間を頂き、本当にありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カスタム投稿タイプのリライトルールについて」には新たに返信することはできません。