Custom Post Type Permalinksを使ってみる

カスタム投稿のパーマリンクをカスタム設定できるWordPressのプラグイン「Custom Post Type Permalinks」を使ってみます。

インストール

プラグイン > 新規追加 を選択して、右上の検索ボックスで「Custom Post Type Permalinks」と検索して、今すぐインストールをクリックします。

インストール後、有効化をクリックします。

プラグインを有効化したら、設定 > パーマリンク設定を選択します。
下部にカスタム投稿タイプのパーマリンク設定が追加されました。

 

設定方法

functions.phpにカスタム投稿を作成する記述を追加します。

functions.php

function create_posttype() {
  register_post_type('item',
    array(
      'label'         => '商品',
      'public'        => true,
      'menu_position' => 5,
      'hierarchical'  => true,
      'supports' => array(
        'title',
        'editor',
      ),
      'has_archive'   => true,
      'rewrite'       => array(
        'with_front' => false,
      ),
    )
  );

  // カスタムタクソノミーを作成(カテゴリー)
  register_taxonomy('item_cat', 'item',
    array(
      'label'        => 'カテゴリー',
      'hierarchical' => true,
      'rewrite'      => array(
        'slug'         => 'category',
        'with_front'   => false,
        'hierarchical' => true,
      ),
    )
  );

  // カスタムタクソノミーを作成(タグ)
  register_taxonomy('item_tag', 'item',
    array(
      'label'        =>'タグ',
      'hierarchical' => false,
      'rewrite'      => array(
        'slug'         => 'tag',
        'with_front'   => false,
        'hierarchical' => true,
      ),
    )
  );
}
add_action('init', 'create_posttype');

カスタム投稿が追加されました。
プラグインで特に設定を行わない場合、パーマリンクは以下のようになります。

一覧ページ
http://ドメイン名/item/
個別ページ
http://ドメイン名/item/投稿名/
カテゴリー一覧ページ
http://ドメイン名/category/カテゴリー名/
タグ一覧ページ
http://ドメイン名/tag/タグ名/

カテゴリーとタグの一覧ページを/item/以下にしたいので、設定 > パーマリンク設定の 「カスタマイズされたカスタムタクソノミーのパーマリンクを使用する。」にチェックを入れます。

チェック部分に書かれている通りなのですが、カスタムタクソノミーのパーマリンクを「http://ドメイン名/post_type/taxonomy/term」の形に設定することができます。
変更を保存すると、パーマリンクを以下のように変更することができました。

一覧ページ
http://ドメイン名/item/
個別ページ
http://ドメイン名/item/投稿名/
カテゴリー一覧ページ
http://ドメイン名/item/category/カテゴリー名/
タグ一覧ページ
http://ドメイン名/item/tag/タグ名/

 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

6件のコメント

  1. らい より:

    はじめまして。

    個別ページの、
    http://ドメイン名/item/投稿名/
    最後の「/」はつけたくない方法はありませんでしょうか..?

    • cly7796.net より:

      らいさん
      コメントありがとうございます。

      個別ページのURLであれば、「設定 > パーマリンク設定」 で設定しているURLの末尾から「/」を除去すれば可能かと思います。

  2. 松田拓也 より:

    連続のコメントですみません。

    カスタム投稿タイプとカスタムタクソノミー の階層(hierarchy)をともにTRUEにしていると404に飛んでしまう不具合があるようです(パーマリンクが/%postname%/の場合)。
    https://www.codamac.jp/blog/custom-taxonomy-404/

    これは/%postname%/をタームと勘違いして参照してしまう不具合だそうで、どちらかの階層をFALSEにしてやるか、パーマリンクに/%post_id%/を使うことで正常に動作はします。

    • cly7796.net より:

      松田拓也さん

      WordPress 5.2.2で上記記事の内容を簡単に試してみましたが、不具合を確認できませんでした。
      きちんと検証はできていないですが、恐らくhierarchyと合わせて他の設定内容が影響しているのかなと思います。

  3. まつたく より:

    プラグインで特に設定を行わない場合、パーマリンクはこうでは無いですか?

    一覧ページ(カスタム投稿タイプitemの投稿一覧)
    http://ドメイン名/item/

    個別ページ(投稿詳細)
    http://ドメイン名/item/投稿名/

    カテゴリー一覧ページ(カスタムタクソノミー item_catの投稿一覧)
    http://ドメイン名/item_cat/ターム名/

    タグ一覧ページ(カスタムタクソノミー item_tagの投稿一覧)
    http://ドメイン名/item_tag/ターム名/

    • cly7796.net より:

      まつたくさん
      コメントありがとうございます。

      item_catとitem_tagのパーマリンクですが、rewriteでパーマリンクの設定を上書きしているので、タクソノミー名(item_cat / item_tag)ではなくslugの値(category / tag)になるかと思います。

cly7796.net へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年3月
 12
3456789
10111213141516
17181920212223
24252627282930
31