【ワードプレス】テーマ変更でカスタム投稿タイプを引き継ぐ方法
カスタム投稿タイプとタクソノミーの重要性
WordPressサイトを運営する中で、カスタム投稿タイプとタクソノミーの設定は重要な要素の一つです。
特に、特定のコンテンツを整理し、効率的に管理するために役立ちます。
しかし、テーマを変更すると、これらのカスタム投稿タイプやタクソノミーが消えてしまうことがあります。
この問題に対処するための方法を解説します。
カスタム投稿タイプとタクソノミーの登録
まず、以下のようにカスタム投稿タイプとタクソノミーを登録するコードをfunctions.phpに追加することで、テーマに依存せずにカスタム設定を保持することができます。
// 初期化アクションにカスタム投稿タイプとタクソノミーの登録関数をフック
add_action('init', 'register_custom_post_types_and_taxonomies');
function register_custom_post_types_and_taxonomies() {
// カスタムタクソノミーの登録(カテゴリー)
register_taxonomy('category-news', 'post', array(
'label' => 'カテゴリー', // 管理画面で表示される名前
'hierarchical' => true, // 階層構造(カテゴリのような)を持つかどうか
'public' => true, // タクソノミーが公開されているかどうか
'show_in_rest' => true, // REST APIに表示するかどうか(Gutenbergエディタをサポート)
));
// カスタム投稿タイプの登録(お知らせ)
register_post_type('news', array(
'label' => 'お知らせ', // 管理画面で表示される名前
'public' => true, // 投稿タイプが公開されているかどうか
'has_archive' => true, // アーカイブページを持つかどうか
'show_in_rest' => true, // REST APIに表示するかどうか(Gutenbergエディタをサポート)
'menu_position' => 5, // 管理画面メニューの表示位置
'supports' => array('title', 'editor', 'thumbnail', 'revisions'), // サポートする機能
));
// お知らせ投稿タイプ用のカスタムタクソノミーの登録(カテゴリー)
register_taxonomy('news-cat', 'news', array(
'label' => 'カテゴリー', // 管理画面で表示される名前
'hierarchical' => true, // 階層構造(カテゴリのような)を持つかどうか
'public' => true, // タクソノミーが公開されているかどうか
'show_in_rest' => true, // REST APIに表示するかどうか(Gutenbergエディタをサポート)
));
// お知らせ投稿タイプ用のカスタムタクソノミーの登録(タグ)
register_taxonomy('news-tag', 'news', array(
'label' => 'タグ', // 管理画面で表示される名前
'hierarchical' => false, // 階層構造を持たない(タグのような)かどうか
'public' => true, // タクソノミーが公開されているかどうか
'show_in_rest' => true, // REST APIに表示するかどうか(Gutenbergエディタをサポート)
'update_count_callback' => '_update_post_term_count', // 投稿数のカウントを更新するコールバック関数
));
}
プラグイン化による解決策
上記のコードはテーマのfunctions.phpに追加するものですが、テーマ変更時にコードが消えてしまうため、プラグイン化することが推奨されます。プラグインとして実装することで、テーマに依存せず、常にカスタム投稿タイプとタクソノミーを維持することができます。以下に、簡単なプラグイン化の手順を説明します。
- 新しいフォルダーを作成し、例えば custom-post-types-plugin という名前を付けます。
- そのフォルダー内に、custom-post-types-plugin.php というファイルを作成します。
- 先ほどのコードをそのファイルにコピーし、次のようなプラグインヘッダーを追加します。
/*
Plugin Name: Custom Post Types Plugin
Description: カスタム投稿タイプとタクソノミーを登録するプラグイン
Version: 1.0
Author: あなたの名前
*/
add_action('init', 'register_custom_post_types_and_taxonomies');
function register_custom_post_types_and_taxonomies() {
// 上記コードをここに挿入
}
プラグイン化によるメリット
これでプラグインとしてカスタム投稿タイプとタクソノミーを管理できるようになります。プラグイン化することで、テーマ変更時に設定が失われることなく、常に安定した運用が可能となります。ぜひ試してみてください。