Written by Kasumi

【簡単】カスタム投稿のタクソノミーページでパーマリンクからタクソノミー名を削除し、ターム名のみにする方法

カスタム投稿のカテゴリーページにあたるタクソノミーページで、パーマリンクからタクソノミー名部分のディレクトリを削除する方法を知りたい。

本記事では、このような悩みを解決する方法について解説します。

Custom Post Type Permalinksプラグインを入れる

まず最初に、Custom Post Type Permalinksプラグインをインストールします。

インストールしたら、設定>パーマリンク設定のページ下部にカスタム投稿タイプのパーマリンクを設定できるようになります

該当するカスタム投稿タイプのパーマリンク設定欄に設定したタクソノミータグ投稿詳細ページに設定したい構造タグを入れます。

入れたら保存します。

functions.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);


//カスタム投稿タイプ名、タクソノミー名部分に該当するタイプ名・タクソノミー名を入力する
add_rewrite_rule('カスタム投稿タイプ名/([^/]+)/?$', 'index.php?タクソノミー名=$matches[1]', 'top');
add_rewrite_rule('カスタム投稿タイプ名/([^/]+)/page/([0-9]+)/?$', 'index.php?タクソノミー名=$matches[1]&paged=$matches[2]', 'top');

次に、functions.phpに上記コードを追加します。

リライトルール部分の記述に該当するカスタム投稿タイプ名、タクソノミー名を記述してください。

ターム未選択時に特定のタームを選択状態にする

/*
	タクソノミー未選択時に特定のタームを選択
----------------------------------------------------- */
function add_defaultcategory_automatically($post_ID) {
  global $wpdb;
  $curTerm = wp_get_object_terms($post_ID, 'タクソノミー名');//タクソノミー名
  if (0 == count($curTerm)) {
    $defaultTerm= array(1);//選択させたいタームID
    wp_set_object_terms($post_ID, $defaultTerm, 'タクソノミー名');//タクソノミー名
  }
}
add_action('publish_カスタム投稿タイプ名', 'add_defaultcategory_automatically');//publish_カスタム投稿タイプ名

最後にタームを選択しないで記事を投稿すると404になるので自動的にタームを選択するように設定します。

上記コード内で、該当するカスタム投稿タイプ名、タクソノミー名に変更後、$defaultTerm変数に未選択時に選択させたいタームIDを設定します。

以上でパーマリンクからタクソノミー名の削除が完了です。

最後にパーマリンクの設定画面を開き更新ボタンを押してください。

まとめ

タクソノミーディレクトリがURLの構造的にいらない場合、SEO上削除してほしいと依頼がくるかもしれません。

本記事を参考に削除してみてください。

以上で解説を終わります。

目次

関連記事

PHP プログラミング

【php】現在のディレクトリURLを取得し、条件分岐する方法

2021.10.28
5639
プログラミング

映画ターミネーター ニュー・フェイトのあらすじ・感想を解説。2の続編!【最後にネタバレ有り】

2020.03.02
1681
プログラミング

Webテキストの日本語に含まれる役物を半角にする方法

2020.06.03
1303
HTMLCSS プログラミング

【簡単CSS】横スクロールできない問題を解決する方法

2022.03.16
8058