【迷子ゼロへ】カスタム投稿の個別ページを「正しい場所」へ自動転送するリダイレクト設定

あなたのサイトで「お知らせ」や「導入事例」のように、情報を整理するためのカスタム投稿を使っているとします。

でも、これらの記事を一覧表示するだけで、個別ページ(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.コード何をしているか例え話
1function...「planをリダイレクトする」という名前の関数を作成**「自動受付ロボット」**を作る
2if (is_singular('plan'))今見ているページが「planの個別ページ」か確認**「planの看板」の前に立っているかチェック
3$medical_page_url = ...転送先の住所(診療案内ページ)を作成「診療案内ページはここですよ」という住所をメモする
4$post_slug = get_post_field...今見ている投稿の名札(スラッグ)を取り出す「一般歯科」という名札が貼ってある
5wp_redirect(.. , 301);転送を実行! 住所と名札を繋いで送る「このページは引っ越しました!自動で連れて行きますね」と言って転送
6exit;転送処理が終わったら、すぐに終了「転送したので、これ以上何もしません」と宣言
7add_action(...)WordPressに指示を登録「お客さんがページを見る直前**に、転送が必要か確認してね」と頼む

3. この設定があなたのサイトにもたらすメリット

この関数を導入することで、あなたのWordPressサイトはより堅牢で、ユーザーに優しいものになります。

❌ リダイレクトなしの場合(問題発生)

ユーザーが誤って /plan/general-dentistry/ にアクセスした場合 → 作っていない個別ページが表示されるか、404エラーが発生し、ユーザーは戸惑って離脱します。

✅ リダイレクトありの場合(理想の状態)

ユーザーが誤って /plan/general-dentistry/ にアクセスした場合 → 自動で /medical/#general-dentistry に転送 → ユーザーは一瞬で診療案内ページの「一般歯科」の項目に飛び、目的の情報を得られます。

これは、404エラーを防ぎ、ユーザーが迷子になるのを防ぐ、サイト運営者として非常に親切な設定です。ぜひ活用してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次