タクソノミーの名前を変更する
以前の記事(カスタム投稿タイプを作成する)で、「タクソノミーの名前とリンク名は基本的に途中で変更できない」としましたが、一定の手順をふまえることで変えることもできます。
タクソノミーのリンク名を変更したい場合
タクソノミーのリンク名は、比較的簡単に変更できます。
まずは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」の記事
- WordPressでSVG画像を扱えるようにする
- ウィジェットタイトルを画像に置き換える方法
- 見出し行数をカウントするスクリプトを書いてみた
- 別の投稿を丸ごと挿入するプラグインを作ってみた
- 著者ページの削除方法
- PHPの無名関数
- タクソノミーの名前を変更する << この記事です
- ブログ投稿インデックスページとは?
- カテゴリIDを階層順に並べた配列をつくる
- Eclipse-PDTでXDebugでブレークしないときの対処法まとめ
- Mac OSX Lionに入れたWordPressをEclipsePDTでデバッグできるようにする
- MacにWordPressのプラグインインストールできないときの対処法
- Mac OSX LionにApache、MySQL、PHP、WordPressを入れる
- カスタム投稿にカテゴリやタグを追加する
- slideshareをWordPressに貼付ける方法まとめ
- スタイルシート初歩の前
- Windows7でWordPressテーマを開発するときのトラブル
- BitNamiの基本事項 for mac
- WordPressにおける連想配列を理解する