機能 ショートカットキー
リファレンス(参考URL)一覧へ移動 R
記事URLをMarkDownとしてコピー Ctrl+M
前のコードタグへ移動 Ctrl+←
次のコードタグへ移動 Ctrl+→
ヘルプを表示・非表示 H
Tips
- ショートカットキーは記事上で有効です。ヘッダー/フッター付近では機能しないことがあります。
- コードタグ移動機能がうまく動かないときは、Shift+F5でページを更新してみてください。
- このウィンドウを閉じるには、Hキーをもう一度押してください

PHPでリダイレクトする方法とWordPressでやる場合の注意点

プログラミング

PHPでリダイレクトするには、


// redirect to top page by some reason function Redirect($url, $permanent = false) { if (headers_sent() === false) { header('Location: ' . $url, true, ($permanent === true) ? 301 : 302); } exit(); } Redirect('https://english-time.xyz/', 301);

こんな感じでいけます。

参考文献:
How to make a redirect in PHP? – Stack Overflow

ただ、Wordpressだと、
以下のようにやってしまうと、

if ( get_the_ID() == 107 ){

    Redirect('https://english-time.xyz/', 301);

}

これは不可能です。特定の記事をget_the_IDで識別してからPHPリダイレクトはできません。

wordpressの仕様として、header.phpはheaderが読み込まれてから読み込まれます。いわば静的なPHPです。functions.phpは対してheaderが読み込まれる前に動作する、システムやデータベースに介入ができる動的なPHPです。

get_the_IDは静的なPHPでしか使えません。functions.phpの時点ではまだget_the_IDが使えないからです。
そして、Redirect()はheader()を含んでいます。header()関数は動的なPHPでしか使えません。

つまり、get_the_IDとheader()の併用はできません。get_the_IDが先に読み込まれるのならまだできる余地はありましたが、リダイレクトをするheader()が先に行う動作なので、無理です。

こういうことってWordpressいじってるとたまにあります。覚えておくと良いと思います。

話もどして、じゃあどうするか。

header.phpの中で、

HTMLでやるか、

if ( get_the_ID() == 107 ){
    echo '   <meta http-equiv="refresh" content="0; URL=https://english-time.xyz/">  ' ;

}

Javascriptでやります。

if ( get_the_ID() == 107 ){
    echo '<script type="text/javascript">
    window.location.href = "https://english-time.xyz/"
</script>' ; 
}

# Webページのリダイレクト速度比較 HTML vs JavaScript vs .htaccessでも言っていますが、Javascriptリダイレクトは早いですがcurlで取れます。
サーバーからしないリダイレクトはあくまで見かけ上のリダイレクトと思っておいたほうがいいでしょう。

この記事で欲しい情報が見つからなかった方へ

この記事の更新情報がある場合があります。
この記事は以下の記事とも関連性があると思われます。

PHPの短縮リンクライブラリ shorty でウェブアプリ作ってみた
PHPでHTTP POSTリクエストを受け取る
URLにアクセスしたらLINEを送信する PHP + LINE nofity
PHPで式展開
WordPressでカスタムページを作って表示するPHPを制限する方法
Ubuntu 16.04にApacheでPHP7.0のローカル開発環境を構築
PHP クエリパラメータを受け取る


管理人の方針で、既存の記事の編集はせず、新しい情報や大きな既存情報の更新があった場合には、新しい記事として公開することになっています。
当記事で欲しい情報が見つからなかった・解決に至らなかった場合、これらのリンクがお役に立てるかも知れません。

どうやってこの関連記事を生成しているの?
この機能のPHPソースコード(2500行)

コメントを残す

Close Menu