1. テーマ適用時にカテゴリを自動追加する
以下のコードを functions.php
に追加すると、テーマ適用時に blog
と news
というカテゴリが自動的に作成されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
function my_theme_insert_default_categories() { // 追加したいカテゴリのリスト $categories = array( 'Blog' => 'blog', 'News' => 'news' ); foreach ($categories as $category_name => $category_slug) { // 同じスラッグのカテゴリがあるかチェック if (!term_exists($category_slug, 'category')) { wp_insert_term( $category_name, // カテゴリ名 'category', // タクソノミー(カテゴリー) array( 'slug' => $category_slug // スラッグ ) ); } } } add_action('after_switch_theme', 'my_theme_insert_default_categories'); |
デフォルト記事を自動作成する
次に、新しく作成した blog または news カテゴリにデフォルト記事を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
function my_theme_insert_default_posts() { // すでに投稿がある場合は処理をスキップ $existing_posts = get_posts(array('post_type' => 'post', 'numberposts' => 1)); if (!empty($existing_posts)) return; // カテゴリIDを取得 $blog_category = get_category_by_slug('blog'); $news_category = get_category_by_slug('news'); $blog_category_id = $blog_category ? $blog_category->term_id : 1; $news_category_id = $news_category ? $news_category->term_id : 1; // Blog カテゴリのデフォルト記事 $default_blog_post = array( 'post_title' => '最初のブログ記事', 'post_content' => 'これはデフォルトのブログ記事です。', 'post_status' => 'publish', 'post_author' => 1, 'post_category' => array($blog_category_id), 'post_name' => 'first-blog-post' ); wp_insert_post($default_blog_post); // News カテゴリのデフォルト記事 $default_news_post = array( 'post_title' => '最新のお知らせ', 'post_content' => 'これはデフォルトのお知らせ記事です。', 'post_status' => 'publish', 'post_author' => 1, 'post_category' => array($news_category_id), 'post_name' => 'latest-news' ); wp_insert_post($default_news_post); } add_action('after_switch_theme', 'my_theme_insert_default_posts'); |
まとめ
このコードを functions.php に追加することで、
テーマを有効化すると blog と news カテゴリが自動追加される。
blog カテゴリに「最初のブログ記事」、news カテゴリに「最新のお知らせ」が自動作成される。
テーマ導入時に必ず作成したいカテゴリや記事がある場合に便利なので、ぜひ活用してみてください!