ブログ

BLOGブログ

WordPress

2024.03.15

任意のURLを設定したい場合のおすすめプラグイン「Custom Post Type Permalinks」

「Custom Post Type Permalinks」とは?

Custom Post Type Permalinksは、wordpressのプラグインでカスタム投稿タイプのパーマリンクを編集できるツールです。

何ができるの?

ブログ画像

例えば)wordpressの全体的なパーマリンクが「月と投稿名」などの設定をしているとする。

「月と投稿名」ドメイン/2024/04/sample-post/

でも、カスタム投稿タイプ「ブログ(blog)」を制作した際にそのパーマリンクとは別の設定をしたい場合が発生した時に「Custom Post Type Permalinks」を使えば

ブログ画像
「ブログ(blog)」ドメイン/blog/blog_type/post_id/

などの任意のパーマリンク設定ができるようになります。

また、カスタム投稿タイプを複数制作する際などにとても便利です。

「functions.php」と組み合わせることでURLが自由自在に!

Custom Post Type Permalinksと「functions.php」を組み合わせて、自分が希望するディレクトリ構造が実現できます。

具体的に何ができるの?

Custom Post Type Permalinksでカスタム投稿タイプのパーマリンクを下記のように設定している場合

ドメイン/blog/blog_type/post_id/

例えば)カスタム投稿タイプ「ブログ(blog)」のタクソノミー(カテゴリー・タグ)を「blog_type」で設定していて投稿ページのIDが「100」・カテゴリーが「travel」にした場合のページのURLは

ドメイン/blog/blog_type/travel/100/

と設定上なるが、「blog_type」がURLにあるとwordpressを使用しない通常のサイトだと違和感に思いませんか?

ブログ画像

本来のディレクトリは下記のように「blog_type」がないタイプだと思います。

ドメイン/blog/travel/100/

「blog_type」を削除して、違和感のないURLにしたい際に「functions.php」を使用して自分が理想とするURLに変更が可能になります。

設定方法

「functions.php」に記載していきます。
例えば)タクソノミー名は「blog_type」でカスタム投稿タイプ名「blog」の場合は

//パーマリンクからタクソノミー名を削除
function my_custom_post_type_permalinks_set($termlink, $term, $taxonomy){
    if ($taxonomy === 'blog_type') {
      return str_replace('/'.$taxonomy.'/', '/blog/', $termlink);
    } 
    return $termlink;
  }
  add_filter('term_link', 'my_custom_post_type_permalinks_set', 11, 3);

//リライトルールを追加して、カスタム投稿タイプ「ブログ」のアーカイブページやページ送りにも適応させます。
add_rewrite_rule('blog/([^/]+)/?$', 'index.php?blog_type=$matches[1]', 'top');
add_rewrite_rule('blog/([^/]+)/page/([0-9]+)/?$', 'index.php?blog_type=$matches[1]&paged=$matches[2]', 'top');

考え方は、●●にタクソノミー名、■■にカスタム投稿タイプ名を設定します。

//パーマリンクからタクソノミー名を削除
function my_custom_post_type_permalinks_set($termlink, $term, $taxonomy){
    if ($taxonomy === '●●') {
      return str_replace('/'.$taxonomy.'/', '/■■/', $termlink);
    } 
    return $termlink;
  }
  add_filter('term_link', 'my_custom_post_type_permalinks_set', 11, 3);

//リライトルールを追加して、カスタム投稿タイプ「■■」のアーカイブページやページ送りにも適応させます。
add_rewrite_rule('■■/([^/]+)/?$', 'index.php?●●=$matches[1]', 'top');
add_rewrite_rule('■■/([^/]+)/page/([0-9]+)/?$', 'index.php?●●=$matches[1]&paged=$matches[2]', 'top');

OFFICE INFORMATIONオフィス情報

〒542-0076
大阪府大阪市中央区難波2-2-3 御堂筋グランドビル 13F

ACCESS
地下鉄「なんば」駅直結(1分)
近鉄「大阪難波」駅直結(1分)
近鉄「日本橋」駅(5分)
お問い合わせ