ページの転送と言えば、.htaccessファイルに直書きするのが基本だと思っていましたが、WordPressには便利な関数があるのでメモとして公開しておきます。
特定の固定ページや投稿などへのアクセスを他のページへリダイレクトさせたいときに便利です。
ちなみにこのサイトではダウンロードコンテンツの管理に使用している「Simple Download Monitor」プラグインに直接アクセス拒否を確実に行う機能がなかったので、本ページのコードを元に実装しています。試しに「Twenty Twenty-Twoテーマの子テーマ」のダウンロードコンテンツページへアクセスすると「Twenty Twenty-Twoの子テーマダウンロードページ」という固定ページへ転送されるようにしていますので、試してみてください。
本ページ掲載のコードを使用するときは
本ページで掲載しているコードは、以下に了承した上で使用ください
- コードは商用・非商用問わず自由に使っていただいて構いませんが、コード追加による不具合やトラブルが発生しても当方では一切責任を負いません
- コードは有効化しているテーマのfunctions.php、style.cssなどへ追加することで機能します。それらのファイルへの変更を行うことに不安のある方は使用しないでください
- コードは本ページの公開日時点で私の環境において動作したものです。WordPressバージョン他環境の違いによって動作しないことがあります
- コードは、セキュリティ、コードの正確さなどにおいて完全なものではありません。中には紹介するコードを簡略化するために省略している部分があるものもありますので、ご自身でコードを十分に検証し、必要な部分の編集を行った上で使用するようにしてください
- 掲載しているのは参考コードです。自身の環境に合わせるための編集はご自身で対応いただく必要があります(コメント欄等から質問いただいても基本回答は致しません)
- 掲載しているコードの転載を禁じます(SNSで紹介いただいたり、本ページへのリンクを張っていただくことは大歓迎です)
特定のページをリダイレクトさせる方法
以下が基本的なコードの体系です。有効化しているテーマのfunctions.phpへ追加して使用します。
function pwcn_specific_page_redirect() {
if( is_single('投稿や固定ページのID') ){
$url = '転送先のURL';
wp_safe_redirect( $url, 301 );
exit();
}
}
add_action( 'template_redirect', 'pwcn_specific_page_redirect' );
このコードでは「投稿や固定ページのID」へアクセスがあった場合に、「転送先のURL」へ「301(恒久的な転送)」を行います。
・転送先のURLは「//」以降のみを入力すると「http」と「https」を自動判別してくれます
・あまり使わないと思いますが、一時的な転送の場合は「301」を「302」に変えます
「投稿や固定ページのID」の調べ方が分からない方は、以下を参考にしてみてください。
また、複数のリダイレクトを行う場合は以下のようにします。
function pwcn_specific_page_redirect_multi() {
//リダイレクト1
if( is_single('投稿や固定ページのID') ){
$url = '転送先のURL';
wp_safe_redirect( $url, 301 );
exit();
}
//リダイレクト2
if( is_single('投稿や固定ページのID2') ){
$url = '転送先のURL2';
wp_safe_redirect( $url, 301 );
exit();
}
}
add_action( 'template_redirect', 'pwcn_specific_page_redirect_multi' );
要は関数内に以下の部分を追加していくだけですね。
if( is_single('投稿や固定ページのID') ){
$url = '転送先のURL';
wp_safe_redirect( $url, 301 );
exit();
}
コメントを残す