以前の記事(カスタム投稿タイプを作成する)で、「タクソノミーの名前とリンク名は基本的に途中で変更できない」としましたが、一定の手順をふまえることで変えることもできます。

 

タクソノミーのリンク名を変更したい場合

タクソノミーのリンク名は、比較的簡単に変更できます。

まずはfunctions.phpを編集します。register_taxonomy()に渡す引数のうち、変更したいリンク名に変えます。

websites_taxonomies() {
・・・
'rewrite' => array( 'slug' => 'websites_cat' )
・・・
}

これだけでは、新しいリンク名が反映されないので、ダッシュボード>設定>パーマリンク設定を開き、何もせずに「変更を保存」ボタンを押します。

※補足:ここで何をしているのか?
WordPressのルーティングは、操作は/wp-includs/rewrite.phpで行い、データはwp_optionsテーブルのrewrite_rulesに格納されています。functions.phpを書き換えただけでは、このリライトルールが変更されません。データベースを直接編集するのは大変なので、rewrite.phpのflush_rewrite_rules()を実行することでルールを更新します。この関数を実行する簡単な方法が、パーマリンクの設定画面から「変更を保存」ボタンを押すということです。

 

タクソノミーの名前を変更したい場合

データベースを直接操作する必要があります。MySQLにログインし、WordPressで使用しているデータベースを選択します。

タクソノミーの名前が関わるのは、”wp_term_taxonomy”テーブルです。まずは、変更前のデータを確認します。

mysql > SELECT * FROM wp_term_taxonomy;
+------------------+---------+-------------------+-------------+--------+-------+
| term_taxonomy_id | term_id | taxonomy          | description | parent | count |
+------------------+---------+-------------------+-------------+--------+-------+
|                1 |       1 | category          |             |      0 |     0 |
|                2 |       2 | category          |             |      0 |     1 |
|                3 |       3 | category          |             |      0 |     2 |
|                4 |       4 | post_tag          |             |      0 |     1 |
|                5 |       5 | nav_menu          |             |      0 |     5 |
|                6 |       6 | websites_category |             |      0 |     2 |
|                7 |       7 | websites_category |             |      0 |     1 |
|                8 |       8 | websites_tag      |             |      0 |     2 |
+------------------+---------+-------------------+-------------+--------+-------+

 

ここでは、 前回記事で作成した”websites_category”を、”websites_cat”に変更したいと思います。

mysql > UPDATE wp_term_taxonomy SET taxonomy = 'websites_cat' WHERE taxonomy = 'websites_category'

変更結果を確認しておきます。

mysql > SELECT * FROM wp_term_taxonomy;
+------------------+---------+--------------+-------------+--------+-------+
| term_taxonomy_id | term_id | taxonomy     | description | parent | count |
+------------------+---------+--------------+-------------+--------+-------+
|                1 |       1 | category     |             |      0 |     0 |
|                2 |       2 | category     |             |      0 |     1 |
|                3 |       3 | category     |             |      0 |     2 |
|                4 |       4 | post_tag     |             |      0 |     1 |
|                5 |       5 | nav_menu     |             |      0 |     5 |
|                6 |       6 | websites_cat |             |      0 |     2 |
|                7 |       7 | websites_cat |             |      0 |     1 |
|                8 |       8 | websites_tag |             |      0 |     2 |
+------------------+---------+--------------+-------------+--------+-------+

データベースを無事変更できました。

次に、functions.phpの関連箇所を書き換えておきます。

function add_websites_post_type() {
・・・
'taxonomies' => array('websites_cat','websites_tag')
・・・
}

function create_websites_taxonomies() {
・・・
register_taxonomy('websites_cat', 'websites', $args);
}

 

※補足
タクソノミーのリンク名をデフォルト指定している場合は(タクソノミー名と一致させる)、ダッシュボード>設定>パーマリンクを開き、「リンクを更新」ボタンを押す必要があります。

以上で変更できました。

 

「WordPress Tips」の記事