WordPressで「通常のブログ投稿」とは別に、日々のトレーニングや勉強記録など、記事にするほどではないけれど記録したいことを“ミニブログ形式”で投稿したいときのために、カスタム投稿タイプで「log」を作った。そのときの手順メモ。

やりたかったこと

  • 通常の投稿とは分けたい(通常のブログ投稿のページには表示させない)
  • URLは /log/カテゴリ名/投稿名 にしたい
  • サイドバーとかで「やったこと」だけリスト形式で出したい

カスタム投稿タイプ log を追加(functions.php に実際に入れたコード)

これは、通常の投稿(post)とは別に「log」という独立した投稿タイプを作るためのコード。"ミニブログ"的な記録用に使いたかったので追加。投稿画面にエディタ・抜粋・カスタムフィールドなども使えるようにしてる。URLの構造もカスタマイズして /log/カテゴリ名/投稿名 にできるようにしてる。

// カスタム投稿タイプ:log
function create_custom_post_type_log() {
  register_post_type('log', [
    'labels' => [
      'name' => 'Log',
      'singular_name' => 'Log',
    ],
    'public' => true,
    'has_archive' => true,
    'rewrite' => [
      'slug' => 'log/%log_category%',
      'with_front' => false,
    ],
    'show_in_rest' => true,
    'supports' => ['title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields'],
    'taxonomies' => ['log_category'],
  ]);
}
add_action('init', 'create_custom_post_type_log');

functions.phpにコードを追加すると、管理画面の左メニューに「Log」という投稿タイプが追加される。

Log
├── 投稿を追加
├── Logカテゴリー
├── タクソノミーの並び順(プラグインによっては表示)
左メニューに「Log」が表示された管理画面の例(投稿を追加・Logカテゴリーなどが並ぶ)

カテゴリー用のタクソノミー追加(log_category)

log投稿専用のカテゴリ機能を作るためのコード。通常の投稿に使われる「カテゴリー」とは別物で、log投稿だけに使える独自の分類(例:training, study など)を作りたかったので追加。

// カスタムタクソノミー:log_category
function create_custom_taxonomy_log_category() {
  register_taxonomy('log_category', 'log', [
    'label' => 'Logカテゴリー',
    'hierarchical' => true,
    'rewrite' => ['slug' => 'log-category'],
    'show_in_rest' => true,
  ]);
}
add_action('init', 'create_custom_taxonomy_log_category');

カテゴリ名をURLに反映させるためのフィルター

/log/%log_category%/投稿名 というURL構造を実現するために必要なフィルター。カスタム投稿のURL中の %log_category% を、実際に設定したカテゴリースラッグに置き換える処理。カテゴリが未設定のときは uncategorized に置き換えるようにしている。

// log投稿のURLにカテゴリスラッグを反映させる
function add_log_category_to_permalink($post_link, $post) {
  if ($post->post_type === 'log') {
    $terms = get_the_terms($post->ID, 'log_category');
    if (!empty($terms) && !is_wp_error($terms)) {
      return str_replace('%log_category%', $terms[0]->slug, $post_link);
    } else {
      return str_replace('%log_category%', 'uncategorized', $post_link);
    }
  }
  return $post_link;
}
add_filter('post_type_link', 'add_log_category_to_permalink', 10, 2);

パーマリンク再保存

設定 → パーマリンク → 変更を保存(これ忘れると反映されない)

投稿URLイメージ

log投稿の場合(ミニブログ形式)

  • /log/training/20250707-rpm45min
  • /log/study/20250708-civil-law

通常の投稿(post)の場合(ブログ記事など)

  • /blog/カテゴリ名/投稿名 例:/blog/wordpress/customize-category-list-sidebar

抜粋欄に「やったことだけ」書くと便利

抜粋欄に箇条書きでメモ書いとくと、サイドバーとかで見やすくなる

【例】

・RPM 45分
・クラムシェル
・ヒップブリッジ

投稿タイプlogでタグを使えるようにする方法

WordPressのカスタム投稿タイプ「log」では、初期設定だとタグが使えない(投稿画面に入力欄が出ない)。
でもあとで検索しやすくしたいので、タグを入れられるようにした。

調べた方法は2つ:

方法①:プラグインを使う

Post Tags and Categories for Pages」みたいなやつを入れると、
カスタム投稿にもタグやカテゴリが使えるようになる。

ただ、全部の投稿タイプに反映されるっぽいので、ちょっとオーバースペックかも。

方法②:functions.phpに1行足す(こっちにした)

子テーマを使ってるので、functions.phpにこれを書いた。

// 投稿タイプ「log」でタグを使えるようにする
function add_tag_support_to_log() {
    // 「post_tag」=タグ機能を、「log」投稿タイプに追加
    register_taxonomy_for_object_type('post_tag', 'log');
}

// 初期化時(init)に上の関数を実行
add_action('init', 'add_tag_support_to_log');

これで無事、log投稿でもタグ入力ができるようになった。

log投稿タイプにタグ入力欄が表示されている投稿画面のスクリーンショット
functions.phpを編集した後、「タグ」入力欄が表示されるようになった。

管理画面のリストにも「タグ」が表示された

WordPressのカスタム投稿タイプ「log」編集画面に表示された「タグ」メタボックス(追加後の管理画面)
カスタム投稿タイプ「log」の編集画面に「タグ」項目が追加された状態。標準投稿以外でもタグ分類が可能に。

おすすめの記事