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

カスタム投稿のカテゴリーページにあたるタクソノミーページで、パーマリンクからタクソノミー名部分のディレクトリを削除する方法を知りたい。
本記事では、このような悩みを解決する方法について解説します。
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上削除してほしいと依頼がくるかもしれません。
本記事を参考に削除してみてください。
以上で解説を終わります。