WordPressでカスタム投稿タイプを作成しました。
これまで数年間、WordPressで記事を投稿しており、投稿のパーマリンク設定はデフォルトの「基本」のまま使用してきました。
https://****.com/?p=123
現在、既存の投稿は数百件に及ぶため、SEOや既存リンクへの影響を考慮し、パーマリンク設定を変更することには抵抗がありました。
そこで、今回新たに作成したカスタム投稿タイプについては、通常の投稿と区別しやすいよう、以下のようなパーマリンクを採用しました。
https://****.com/?post_type=document&p=123
このようにすることで、URLを見るだけでカスタム投稿タイプ(document)の記事であることが分かるようにしています。
add_action('init', 'custom_document_init');
function custom_document_init() {
// ■ カスタム投稿タイプ「document」の登録
register_post_type(
'document',
array(
'labels' => array(
'name' => __('カスタム投稿_ドキュメント'), // 管理画面のメニュー名・ページタイトル
'singular_name' => __('ドキュメント投稿'),
'menu_name' => __( 'カスタム投稿ドキュメント'), // 管理画面の左メニュー名
'all_items' => __('ドキュメント一覧'), // 子メニュー:一覧
'add_new_item' => __('ドキュメント投稿を追加'),
'edit_item' => __('ドキュメント投稿を編集'),
),
'public' => true, // サイト上および管理画面で利用可能にする
'has_archive' => true, // 一覧(アーカイブ)ページを有効化
'menu_position' => 5, // メニューの表示位置(「投稿」のすぐ下)
'menu_icon' => 'dashicons-database', // メニューのアイコン
'show_in_rest' => true, // ブロックエディター(Gutenberg)を使用する
'supports' => array('title', 'editor', 'thumbnail', 'custom-fields', 'page-attributes', 'revisions'),
'rewrite' => false, // パーマリンク「基本」対応:URLの書き換えを無効化
)
);
// ■ 専用カテゴリー「document_category」の登録
register_taxonomy(
'document_category',
'document',
array(
'labels' => array(
'name' => __('ドキュメント_カテゴリー'),
'add_new_item' => __('ドキュメント_カテゴリーを追加'),
),
'hierarchical' => true, // チェックボックス形式(階層構造)にする
'show_ui' => true, // 管理画面に編集UIを表示
'show_in_rest' => true, // ブロックエディターのサイドバーに表示
'update_count_callback' => '_update_post_term_count',
'rewrite' => false, // パーマリンク「基本」対応:URLの書き換えを無効化
)
);
}
// 2. URLを「?post_type=document&p=数字」の形に強制統一する
add_filter('post_type_link', 'force_document_numeric_permalink', 10, 2);
function force_document_numeric_permalink($post_link, $post) {
// カスタム投稿「document」の場合のみ、投稿ID(数字)を使ったURLに書き換える
if ($post->post_type === 'document') {
return add_query_arg(
array(
'post_type' => 'document',
'p' => $post->ID
),
home_url('/')
);
}
return $post_link;
}

