あなたのサイトで「お知らせ」や「導入事例」のように、情報を整理するためのカスタム投稿を使っているとします。
でも、これらの記事を一覧表示するだけで、個別ページ(https://example.com/plan/xxx/ のようなページ)は作らないという設計にしたい場合、そのままでは**「404エラー」**になってユーザーを迷わせてしまいます。
この記事で紹介する設定をすれば、ユーザーが間違って個別ページにアクセスしても、自動で正しい「診療案内ページ」の該当箇所へ連れて行ってくれるようになります。
目的:間違ったページに来た人を「正解の場所」へナビゲート
私たちは今回、以下の流れを実現するコードを作ります。
| もし | ユーザーが「plan」の個別ページを開いたら… |
| 自動で | 「診療案内ページ」の該当箇所に転送する |
| 結果 | 404エラーを防ぎ、ユーザーに親切なサイトになる |
Google スプレッドシートにエクスポート
1. リダイレクトするコード(functions.phpに貼るだけ)
このコードをあなたのWordPressテーマの**functions.php**に貼り付けてください。
PHP
<?php
/**
* 投稿タイプ「plan」の個別ページへのアクセスを、
* 診療案内ページの該当セクションへ自動転送する関数
*/
function redirect_plan_single_to_medical() {
// ① 今見ているページが「plan」の個別ページかチェック
if (is_singular('plan')) {
// ② 転送先のURL(診療案内ページ)を作る
$medical_page_url = home_url('/medical/');
// ③ 今見ている投稿の「URL用の名前(スラッグ)」を取得
// 例:「一般歯科」のページなら → general-dentistry
$post_slug = get_post_field('post_name', get_the_ID());
// ④ 診療案内ページ + ページ内リンクで転送実行!
// 301は「もう二度と戻らない永久の引っ越しだよ」という意味(SEO対策)
wp_redirect($medical_page_url . '#' . $post_slug, 301);
// ⑤ 転送したら処理を終了する
exit;
}
}
// ⑥ WordPressに「ページを表示する前に、この関数を実行してね」と頼む
add_action('template_redirect', 'redirect_plan_single_to_medical');
?>
2. コードが行っている「7つの作業」を徹底解説
コードが裏側で何をしているのかを、例え話で分かりやすく解説します。
| No. | コード | 何をしているか | 例え話 |
| 1 | function... | 「planをリダイレクトする」という名前の関数を作成 | **「自動受付ロボット」**を作る |
| 2 | if (is_singular('plan')) | 今見ているページが「planの個別ページ」か確認 | **「planの看板」の前に立っているかチェック |
| 3 | $medical_page_url = ... | 転送先の住所(診療案内ページ)を作成 | 「診療案内ページはここですよ」という住所をメモする |
| 4 | $post_slug = get_post_field... | 今見ている投稿の名札(スラッグ)を取り出す | 「一般歯科」という名札が貼ってある |
| 5 | wp_redirect(.. , 301); | 転送を実行! 住所と名札を繋いで送る | 「このページは引っ越しました!自動で連れて行きますね」と言って転送 |
| 6 | exit; | 転送処理が終わったら、すぐに終了 | 「転送したので、これ以上何もしません」と宣言 |
| 7 | add_action(...) | WordPressに指示を登録 | 「お客さんがページを見る直前**に、転送が必要か確認してね」と頼む |
3. この設定があなたのサイトにもたらすメリット
この関数を導入することで、あなたのWordPressサイトはより堅牢で、ユーザーに優しいものになります。
❌ リダイレクトなしの場合(問題発生)
ユーザーが誤って /plan/general-dentistry/ にアクセスした場合 → 作っていない個別ページが表示されるか、404エラーが発生し、ユーザーは戸惑って離脱します。
✅ リダイレクトありの場合(理想の状態)
ユーザーが誤って /plan/general-dentistry/ にアクセスした場合 → 自動で /medical/#general-dentistry に転送 → ユーザーは一瞬で診療案内ページの「一般歯科」の項目に飛び、目的の情報を得られます。
これは、404エラーを防ぎ、ユーザーが迷子になるのを防ぐ、サイト運営者として非常に親切な設定です。ぜひ活用してみてください。

