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上削除してほしいと依頼がくるかもしれません。

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

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

目次

関連記事

WordPress プログラミング

カスタム投稿タイプのターム(カテゴリー)の初期設定を変更する方法

2022.04.01
1231
WordPress

カスタムフィールドの定番。Advanced Custom Fieldsプラグインを使ってみよう【ワードプレス】

更新日:2019.11.28
405
WordPress

WordPressでカテゴリ一覧を表示する方法【結論:get_categories関数を使おう】

更新日:2022.05.28
493
WordPress

【WordPress】the_titleで出力されたタイトル内のhtmlタグを削除する方法

2022.12.14
349